吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8220|回复: 7
收起左侧

[Python 转载] mzitu爬虫,小福利。

[复制链接]
love4325 发表于 2019-12-13 19:32
刚学习python没多久,请多多指教。
用了四个模块,具体看代码4-7行,都是常用模块!
内容是爬取https://www.mzitu.com/ 的妹子图片
只写了一组套图的爬取

有两行代码需要自行填写,分别是:
第25行的url   需要自行填写组套图的网址;就是自己点开一个喜欢的图片的网址,例如:https://www.mzitu.com/215383
第60行的文件路径名   我是放在了桌面的img文件夹,img文件夹需要自行创建

好了,不废话了,下面放上代码
[Python] 纯文本查看 复制代码
#https://www.mzitu.com/ 妹子图
# -*- coding: UTF-8 -*-

import requests
from lxml import etree
import time
import random

UserAgent=['Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0',
    		'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1',
    		'Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50',
    		'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
    		'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)',
    		'Mozilla/5.0 (Windows NT 10.0; WOW64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
     		 ]

Usera=random.choice(UserAgent) #随机一个UserAgent浏览器标识

#构造请求头信息,经测试mzitu网站光构造一个UserAgent不行
headers={'User-Agent':Usera,
           'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
           'Accept-Encoding': 'gzip',
           "Referer": "https://www.mzitu.com/all"}

url="https://www.mzitu.com/215383"    #具体网址需要自己填写

#套图一共多少页,读取endPage页码数字
data=requests.get(url,headers=headers).text
html=etree.HTML(data)
result=html.xpath('//div//div[@class="pagenavi"]/a/span')   
endPage=result[-2].text    #最后一页页码,str格式

class Spider(object):
	def __init__(self):
		self.url=url
		self.endPage=int(endPage)
		self.header=headers
		self.fileName=1
		
	#构造url:找到一共多少页,读取endPage页码数字
	def mztSpider(self):
		for page in range(1,self.endPage+1):
			murl=url+"/"+str(page)
			self.loadImages(murl)
	
	#通过每一页详情页,顺便获得图片的链接
	def loadImages(self,link):
		data=requests.get(link,headers=self.header).text
		html=etree.HTML(data)
		links=html.xpath('//div//div[@class="main-image"]/p/a//img/@src')
		time.sleep(0.1)   #经测试如果不用时间间隔,容易中间断掉
		for imageslink in links:
			self.writeImages(imageslink)

	#通过图片所在链接,爬取图片并保存到本地
	def writeImages(self,imageslink):
		print("正在存储图片:",self.fileName,"...")
		image=requests.get(imageslink,headers=self.header).content
		#保存图片到本地
		file=open(r"C:\Users\XD\Desktop\img\\"+str(self.fileName)+".jpg","wb") #img是文件夹名字,具体可以自行设置
		file.write(image)
		file.close()
		self.fileName+=1

if __name__ == '__main__':
	print("该组图共有"+endPage+"张图片")
	start=Spider()
	start.mztSpider()
	print("下载完成!")



免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
小兴818 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

  • · 自用|主题: 163, 订阅: 8

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

season000 发表于 2019-12-13 21:39
学习学习
老狗丶 发表于 2019-12-13 22:19
例如:https://www.mzitu.com/215383

这妹子的胸是有多大?我勒个去

免费评分

参与人数 1吾爱币 +1 收起 理由
小兴818 + 1 老司机,你成功吸引了我

查看全部评分

forthebest 发表于 2019-12-14 10:12
renhgl 发表于 2021-3-14 20:51
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\meizitu.py", line 31, in <module>
    endPage=result[-2].text    #最后一页页码,str格式
IndexError: list index out of range
黑鲨冷空气 发表于 2021-3-23 14:56
楼主很有想法,下回换个网站爬爬
3309min 发表于 2021-3-23 16:23
我有一个小想法,直接在他的首页将首页的<li>标签下的url全爬下来,放到url列表中,writeImages()函数里面可以加一点自动创建文件夹的活,去将那些url附近的名字截取下来当做文件夹的名字
yimn 发表于 2021-3-23 17:22
图呢  楼主上传写样张可好
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 08:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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