博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python爬虫初接触,学会爬虫不抓美女图片干啥!
阅读量:6257 次
发布时间:2019-06-22

本文共 2901 字,大约阅读时间需要 9 分钟。

hot3.png

学习编程语言是很枯燥的,尤其是对一个编程零基础的人来说,更为枯燥!所以我们要从枯燥的学习中找点乐趣和动力!比如,抓点小姐姐的图片

我们的目标选择唯一图库,url自己去找【人工呲牙笑】

这个网站没有反爬,特别好爬,打开主页后,找到美女图片分类

Python爬虫初接触,学会爬虫不抓美女图片干啥!

上面分类没有这个分类,自己想办法进入哦。。。

然后往下拉,就会发现N多的图集,我们先去找找翻页,记得先打开F12开发者工具,然后选择翻页,查看源代码中位置!

Python爬虫初接触,学会爬虫不抓美女图片干啥!

可以看到这里就是控制页面翻页的源代码了,我们直接拿到a标签的href属性,这个是最后一页的地址,将属性中的“789”切出来,就拿到了最大页码,然后循环拿到所有页面的url,如下图

Python爬虫初接触,学会爬虫不抓美女图片干啥!

这样就拿到所有页面的url了,然后我们取图集的url,同样的方式,找到源码中url的位置

Python爬虫初接触,学会爬虫不抓美女图片干啥!

img_urls = etree.HTML(requests.get(url_i).text).xpath('//div[@class="ABox"]/a/@href')#url_i 是页面的url,也就是上个代码截图中那个列表,循环遍历出来的

一行代码就取到了所有a标签下的图集地址,一页有24个图集!这里我们用一个函数来获取所有图集内图片地址并返回图集名字和图片地址

Python爬虫初接触,学会爬虫不抓美女图片干啥!

这样,主要内容就写完了,然后就是构建整个代码,写入本地,我还将之前做的也加进去了,整体代码和效果发出来看看!

import osimport timeimport requestsfrom lxml import etreedef get_img_url(url):	'''	:param url: 图集url	:return: 图集名字和图片地址所构成的字典	'''	img = {}#空字典,用于放图片url和对应的编号	html = requests.get(url)#获取页面源码	html.encoding = 'gb2312'	data = etree.HTML(html.text)#解析	title = data.xpath('//div[@class="wrapper clearfix imgtitle"]/h1/text()')[0]#图集名	page = data.xpath('//div[@class="wrapper clearfix imgtitle"]/h1/span/span[2]/text()')[0]#图集图片数	img['1'] = data.xpath('//a[@class="down-btn"]/@href')[0]#第一张的图片地址	for i in range(2,int(page)+1):		#其余的图片地址		img_url = etree.HTML(requests.get(url.replace('.html','_%s.html'%str(i))).text).xpath('//a[@class="down-btn"]/@href')[0]		img['%s'%str(i)] = img_url#写入字典	return title,imgdef downloader(url,path,name,header={}):	start = time.time()#开始时间	if os.path.exists(path):  # 判断路径及文件夹是否存在,不存在即创建		pass	else:		os.mkdir(path)	size = 0	if header is None:		response = requests.get(url, stream=True)#stream属性必须带上	else:		response = requests.get(url, stream=True,headers=header)#stream属性必须带上	chunk_size = 1024#每次下载的数据大小	content_size = int(response.headers['content-length'])#总大小	if response.status_code == 200:		print('[文件大小]:%0.2f MB' % (content_size / chunk_size / 1024))#换算单位并print		with open(path+'\\%s'%name, "ab") as file:			for data in response.iter_content(chunk_size=chunk_size):				file.write(data)				file.flush()#清空缓存				size += len(data)#已下载文件大小				#\r指定行第一个字符开始,搭配end属性完成覆盖进度条				print('\r'+'[下载进度]:%s%.2f%%' % ('>'*int(size*50/ content_size),float(size / content_size * 100)),end='')	end = time.time()#结束时间	print('\n'+"%s下载完成!用时%.2f秒"%(name,(end-start)))if __name__ == '__main__':	url_list=[]#放入所有页面url	url = 'http://www.mmonly.cc/mmtp/'	url_list.append(url)#先放入第一页	html = requests.get(url)	html.encoding = 'gb2312'	page = etree.HTML(html.text).xpath('//a[text()="末页"]/@href')[0].split('_')[-1].split('.')[0]	for i in range(2,int(page)+1):		url_list.append(url+'list_9_{}.html'.format(str(i)))#其余页面url,注意第一页和其他页不一样	for url_i in url_list:		img_urls = etree.HTML(requests.get(url_i).text).xpath('//div[@class="ABox"]/a/@href')		for img_url in img_urls:			title,imgs = get_img_url(img_url)			for img in imgs.keys():				path = 'E:\\python\\mn\\%s' % title				downloader(url= imgs[img],path=path,name='%s.jpg'%(title+img))

Python爬虫初接触,学会爬虫不抓美女图片干啥!

Python爬虫初接触,学会爬虫不抓美女图片干啥!

其实这里我想说的是,整个网站很标题党。。。完全不符合标题的。

转载于:https://my.oschina.net/u/3873244/blog/1829677

你可能感兴趣的文章
VC++ CArchive及简单的文件操作方法
查看>>
使用canvas制作一个移动端画板
查看>>
android中ListView数据混乱问题
查看>>
QT学习-10/31/2012
查看>>
jQuery File Upload
查看>>
bbb板运行rtems-编写led底层驱动
查看>>
如何从零安装Mysql
查看>>
Appium简介及工作原理
查看>>
IP 类型转换
查看>>
mysql实践1
查看>>
struts2 Preparable接口
查看>>
hdu4578(线段树)
查看>>
写一个脚本简单检测局域网存活的机器
查看>>
Dubbo
查看>>
angular与jquery 进行json提交数据,报文头格式不一致的解决方案
查看>>
更换笔记本内存:自己动手修电脑(一)
查看>>
POJ2262-Goldbach's Conjecture
查看>>
区分扫描枪输入和键盘输入的实现
查看>>
【ssh服务配置】
查看>>
【mongdb主从复制和同步】
查看>>