鱼C论坛

 找回密码
 立即注册
查看: 2172|回复: 3

[作品展示] 第一次交作业,妹子图爬取

[复制链接]
发表于 2020-3-30 09:43:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 一个账号 于 2020-3-30 09:57 编辑

看老污龟旧版视频学习的python,研究了不少时间,终于鼓捣出了我的第一个爬虫程序,加了随机延迟,太快会被封,话不多说,源码贴上

  1. import requests
  2. import re
  3. import random
  4. import time
  5. import os
  6. proxy = [
  7.     {'https': '47.99.236.251:3128'},            #未启用
  8.     {'https': '1.197.16.250:9999'},
  9.     {'https': '123.163.96.235:9999'},
  10.     {'https': '202.183.32.182:80'},
  11.     {'https': '113.194.31.21:9999'}]
  12. header = [   
  13. {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.17 Safari/537.36'},
  14. {'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1'},
  15. {'user-agent':'mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/58.0.3029.110 safari/537.36 edge/16.16299'}
  16. ]
  17. def ym (http,referer):      #返回妹子图源码
  18.     headers=random.choice(header)
  19.     headers['Referer'] = '{}'.format(referer)
  20.    
  21.    
  22.     re=requests.get(url=http,headers=random.choice(header))
  23.    
  24.     return re.text
  25. def bcwj(wname,http,referer):         #保存文件,需要在headers中间加入referer
  26.     headers=random.choice(header)
  27.     headers['Referer'] = '{}'.format(referer)
  28.     name=http.split('/')[-1]
  29.     time.sleep(random.randint(1,8))
  30.     r=requests.get(http,headers=headers)
  31.     filename=wname+'\\'+name
  32.     with open(filename,'wb') as f:
  33.         f.write(r.content)
  34.     print(headers,name,'下载成功')

  35. def ppzpz(ym):      #匹配源码中照片组,返回list
  36.     zpz=re.findall(r'<li><a href="(https://www.mzitu.com/\d{4,7})',ym)
  37.     return zpz  

  38. def ppjpg(ym2):      #返回jpg下载链接
  39.     jpg=re.findall(r'https://i3.mmzztt.com/\d+/\d+/.{1,6}.jpg',ym2)
  40.     return jpg
  41. def ppjpg2(ym2):      #返回jpg下载链接
  42.     jpg=re.findall(r'https://i\d{0,1}.mmzztt.com/\d+/\d+/.{1,6}.jpg',ym2)
  43.     return jpg
  44. def fhys(aa):       #返回照片组中的最大页数
  45.     ys=re.findall(r'<span>(\d{1,2})</span>',aa)
  46.     return ys
  47. def ppwjj(httpjpg):                 #给一个jpg链接,注意返回的是list
  48.     y=ym(httpjpg,httpjpg)
  49.     wname=re.findall(r'content="(.*?)- 第',y)
  50.     return wname
  51. ys=input('请输入爬取的页数(建议10):')
  52. for i in range(2,int(ys)):      #首页,首页中有24组照片
  53.     time.sleep(random.randint(8,15))
  54.     print(i)
  55.     a=('https://www.mzitu.com/page/%s/') % i
  56.     zpz=ppzpz(ym(a,a))      #首页上的照片组列表
  57.     print(zpz)
  58.     for n in zpz:                   #循环有几个照片组
  59.         wname=ppwjj(n)[0]
  60.         wname=wname.rstrip()
  61.         try:
  62.             os.mkdir(wname)
  63.         except Exception:
  64.             print('文件夹已存在')
  65.         #print(n,wname)
  66.         try:
  67.             yss=int(fhys(ym(n,n))[-1])      #这个照片组中的妹子有几张jpg(页数)
  68.         except Exception:
  69.             print('第一次循环未获取到页数')
  70.             continue
  71.         time.sleep(random.randint(5,11))
  72.         for ii in range(0,yss):          #循环一个照片组中的jpg,然后保存到本地
  73.             time.sleep(3)
  74.             a=(n+'/%s' )% ii
  75.             #print(a)
  76.             try:
  77.                 y=ym(a,i)
  78.                 jpg=ppjpg2(y)[0]
  79.             except Exception:
  80.                 print('获取jpg异常,跳过本次循环(jpg,源码):\n',y)
  81.                 continue
  82.             print(jpg)
  83.             try:
  84.                 bcwj(wname,jpg,i)
  85.             except Exception:
  86.                 print(',保存文件出现异常')
  87.                 continue
复制代码

         
            

微信图片_20200330094617.png
123123.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-30 09:44:57 | 显示全部楼层
老污龟。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 10:03:27 | 显示全部楼层
妹子图天天招谁惹谁了,天天被人爬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 10:10:34 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-18 10:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表