先说下学习中获得的帮助:
突然想学怎么爬图片,于是去找找了网上的一些代码案例,下面就是让我醍醐灌顶(学到东西)的博客,感谢大哥!
https://github.com/Dootmaan/BingWallpaper
在学习的过程中,不是很理解lxml的作用,找到了一篇学习lxml很不错的博客https://www.cnblogs.com/gaochsh/p/6757475.html
也感谢这位大哥!
接下来是讲一讲思路
思路:
1.利用requests库给网站(也就是想爬的那个网站)发送请求
2.利用lxml提取想要的数据
3.利用open()和write()函数下载保存图片
接下来看看代码
代码:
[Python] 纯文本查看 复制代码
import requestsfrom lxml import etree
def bspider(html):
ht = etree.HTML(html)
# html_data = ht.xpath('/html/head/link[@id = "bglink"]/@href')#在这里爬不到href
html_data2 = ht.xpath('//div[@id = "bgImgProgLoad"]/@data-ultra-definition-src')#定位到所要数据的位置并爬取
# print(html_data2[0])
a = "https://cn.bing.com/"+html_data2[0]#图片的网址
try:
picture = requests.get(a)
except requests.exceptions.ConnectionError:
print("wrong")
fq = open('D:\\tupian\\'+"1"+'.jpg','wb')#创建一个叫1.jpg的文件
fq.write(picture.content)#将图片数据写入1.jpg也就是下载我们要的图片
print("success")
if __name__ == '__main__':
result = requests.get('https://cn.bing.com/')#bing的网址
bspider(result.text)
对一些注释的解释:
1. #创建一个叫1.jpg的文件
#将图片数据写入1.jpg也就是下载我们要的图片 :
我理解的程序爬取图片的方式是,在网上获取到图片的数据(1010…也就是二进制数据),然后我们在本地创建一个文件本身什么东西都没有,这时我们再将图片的二进制数据写进文件当中,文件就成为我们想要的图片。
按照我自己理解的方式,感觉能明白爬虫的原理,但又觉得说出来怪怪的。若有不正之处,欢迎指教。
最后
总结:
1.更加熟悉了requests库的用法
2.学会怎么使用lxml库(如etree.HTML(),xpath())
3.终于明白了是用write()函数将图片保存下载下来的(以前看其他博客都不知道是那段代码起的作用,小声说.jpg)
ps:由于我的一些图片太大上传不到吾爱,有些东西没写出来(哭了)
感兴趣的朋友可以看看我在csdn的博客:
https://blog.csdn.net/weixin_43728206/article/details/104758410
|