[爬虫]今天又没学到什么之Python爬取bing壁纸
先说下学习中获得的帮助:突然想学怎么爬图片,于是去找找了网上的一些代码案例,下面就是让我醍醐灌顶(学到东西)的博客,感谢大哥!
https://github.com/Dootmaan/BingWallpaper
在学习的过程中,不是很理解lxml的作用,找到了一篇学习lxml很不错的博客https://www.cnblogs.com/gaochsh/p/6757475.html
也感谢这位大哥!
接下来是讲一讲思路
思路:
1.利用requests库给网站(也就是想爬的那个网站)发送请求
2.利用lxml提取想要的数据
3.利用open()和write()函数下载保存图片
接下来看看代码
代码:
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)
a = "https://cn.bing.com/"+html_data2#图片的网址
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
zoomyou 发表于 2020-3-9 20:12
谢谢分享,请问您是从哪里开始学习的,是自学书本视频,还是报了培训机构,谢谢回复!!!
自学,从别人的博客一点点学会的 谢谢分享 贴源代码的格式要标准吧! 多看看论坛里的爬虫大佬写的 会有很多帮助的 看起来还不错 谢谢分享,请问您是从哪里开始学习的,是自学书本视频,还是报了培训机构,谢谢回复!!! 谢谢分享,排版还得注意一下 fq使用完后要close一下 cyantea 发表于 2020-3-9 20:00
贴源代码的格式要标准吧!
第一次贴,下次注意 Flytom 发表于 2020-3-9 20:22
fq使用完后要close一下
太粗心了,下次注意。谢谢啦!
页:
[1]
2