本文来源吾爱破解论坛
本帖最后由 zb848 于 2020-2-20 22:11 编辑 未命名-1.gif (336.76 KB, 下载次数: 2)
下载附件
保存到相册
爬虫小白教程之回车桌面图片下载
作者:随波逐流
前几天在论坛发了个帖子,<第一PPT抓取工具+人教版1-9年级课件抓取工具> 地址:https://www.52pojie.cn/forum.php?mod=viewthread&tid=1106967&page=1#pid29950597
有人问我要教程,我就写了个 本教程主要给小白用,大神跳过。
爬虫用什么程序,还能是什么,python呗。
第一课:图片资源页面分析
1、找到图片地址:在回车桌面找一张图片页面,如:https://www.enterdesk.com/bizhi/50790.html用Chrome打开,按F12键打开检查页,点击一下左上角第一个箭头按钮,再点击图片页面正面的小图片就定位到小图片的在网页代码中的地址,如下图
小图片地址是https://up.enterdesk.com/edpic_360_360/32/5a/2f/325a2f10c236e3e3f5a15d82ca314daf.jpg
再点击图片上面的“查看清晰大图”进入大图页面,点击“高清显示”,就看到高清大图了,再一样按F12,
找到高清大图片地址:https://up.enterdesk.com/edpic_source/32/5a/2f/325a2f10c236e3e3f5a15d82ca314daf.jpg
看到红色的不同之处,就是说我只要把小图地址中的/edpic_360_360换成/edpic_source就能得到大图地址。
找到user-agent:同样是按F12,在network的headers下requests heades下可看到user-agent标志。这个标志是干什么用的,就相当于你电脑的标识,当访问网站时网站就会认为你是台电脑,就让你通过。如果没有带这个标识,某些网站的反爬虫机制就会阻止你访问。一些特别严格的网站反爬虫机制还会需要requests heades下的其他元素做标识判别你是不是爬虫。
第二课:单页图片爬取下载代码 enterdesk_01.py
查看网页代码所有小图片地址的路径,所有小图片都是在一个class='swiper-wrapper' 的DIV中,在这个DIV下又包含多个DIV,每个这样的DIV就包含一张小图的img元素,在img中的src就是小图片地址。
那Xpath的路径就是//div[@class='swiper-wrapper']/div/a/img/@src
@src 表示取img元素中的src的值。
因为有多张图片,我们可以构建一个列表img_list来存储所有图片地址信息。
如: img_list=[img1_url,img2_url,…………]
图片标题是在<h1class="myarc_h1">风车请吹走我的烦恼</h1> 这段代码中。
xpath路径就是//h1[@class='myarc_h1']/text()
text()表示取h1元素下的所有内容。
我们创建一个字符串ing_name存储标题。
[Python] 纯文本查看 复制代码
#随波逐流原创代码:回车桌面图片下载 import os import requests from lxml import etree #requests,lxml控件需要pip安装。什么?不会。小孩子一边玩去。 url="https://www.enterdesk.com/bizhi/50790.html" headers={"user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"} response=requests.get(url,headers=headers) #获取网页 html_str=response.content.decode() #将页面内容转换成字符串 html=etree.HTML(html_str) #构造了一个XPath解析对象并对HTML文本进行自动修正 img_list=html.xpath("//div[@class='swiper-wrapper']/div/a/img/@src") #创建图片地址列表,获取图片地址 #print(img_list) #到这里可打印一下看看获取到的图片地址列表是否正确,最后可注释掉这行 img_name=html.xpath("//h1[@class='myarc_h1']/text()")[0].replace(" ","") #获取图片标题,replace替换掉标题中的空格 #print(img_name) #到这里可打印一下看看获取到的图片名称是否正确,最后可注释掉这行 try: os.mkdir("{}".format(img_name)) #在程序目录下创建一个以“图片标题”命名的文件夹用来保存这一组图片 except: pass for url in img_list: url=url.replace("edpic_360_360","edpic_source") #将小图地址替换成大图地址 filename=url.split("/")[-1] #获取图片文件名,split是删除网址中/号前所有字符包括/ #print(filename) #可打印一下文件名看是否获取成功,最后可注释掉这行 f = requests.get(url, headers=headers) #获取网页地址 with open(".\\{0}\\{1}".format(img_name,filename), "wb") as code: # 下载文件 code.write(f.content) print("【{}】高清图片下载完成。".format(filename)) print("全部图片下载完成,保存在程序目录下【{}】文件夹下".format(img_name))
随波逐流原创代码:回车桌面图片下载
import os
import requests
from lxml import etree #requests,lxml控件需要pip安装。什么?不会。小孩子一边玩去。
url="https://www.enterdesk.com/bizhi/50790.html"
headers={"user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
response=requests.get(url,headers=headers) #获取网页
html_str=response.content.decode() #将页面内容转换成字符串
html=etree.HTML(html_str) #构造了一个XPath解析对象并对HTML文本进行自动修正
img_list=html.xpath("//div[@class='swiper-wrapper']/div/a/img/@src") #创建图片地址列表,获取图片地址
print(img_list) #到这里可打印一下看看获取到的图片地址列表是否正确,最后可注释掉这行
img_name=html.xpath("//h1[@class='myarc_h1']/text()")[0].replace(" ","") #获取图片标题,replace替换掉标题中的空格
print(img_name) #到这里可打印一下看看获取到的图片名称是否正确,最后可注释掉这行
try:
os.mkdir("{}".format(img_name)) #在程序目录下创建一个以“图片标题”命名的文件夹用来保存这一组图片
except:
pass
for url in img_list:
url=url.replace("edpic_360_360","edpic_source") #将小图地址替换成大图地址
filename=url.split("/")[-1] #获取图片文件名,split是删除网址中/号前所有字符包括/
print(filename) #可打印一下文件名看是否获取成功,最后可注释掉这行
f = requests.get(url, headers=headers) #获取网页地址
with open(".\{0}\{1}".format(img_name,filename), "wb") as code: # 下载文件
code.write(f.content)
print("【{}】高清图片下载完成。".format(filename))
print("全部图片下载完成,保存在程序目录下【{}】文件夹下".format(img_name))
第三课:多级页面爬取。上面说的是一个页面下载一组图片,但我们往往需要的是下载一个类型的图片,如这个页面的上级目录是 壁纸-风景 https://www.enterdesk.com/zhuomianbizhi/fengjing/ 怎么下载这个类目下的所有地址呢?很简单啊,向上面的方法一样,先获取页面的每个资源页面地址,用循环重复上面下载单页面的步骤,就将所有页面下载了。
下载积分: 吾爱币 -1 CB
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。
- 上一篇: 爬取唯美女生网站上所有小姐姐的照片
- 下一篇: 通过机器学习破解验证码图片