python爬虫爬取网页图片(python爬取网站图片并保存)

前言

这几天研究了一下一直好奇的爬虫算法。在这里我把这几天的一些经历写下来。在下方输入文字:

python爬虫爬取网页图片(python爬取网站图片并保存)

您可能需要的工作环境:

Python3.6官网下载

我们这里使用搜狗作为爬取对象。

首先我们进入搜狗图片进入壁纸类别(当然这只是一个例子Q_Q),因为如果我们需要爬取某个网站的数据,我们需要对其有一个初步的了解。

进去后就是这样了,然后F12进入开发者选项。作者使用Chrome。

右键单击图像进行检查

我们发现我们需要的图片src在img标签下,于是我们先尝试使用Python的requests来提取组件,然后获取img的src然后使用urllib.request.urlretrieve将图片一张一张下载下来,这样从而达到批量获取数据的目的。好主意现在,以下内容应该告诉程序要抓取的URL是这个URL来自进入类别后的地址栏。现在我们了解了url地址,让我们开始愉快的编码时间:

在写这个爬虫程序的时候,最好一步步调试,保证我们的每一步操作都是正确的。这也是程序员应该具备的好习惯。作者不知道我是不是程序员。我们来分析一下这个url指向的网页。

?importrequestsimporturllibfrombs4importBeautifulSoupres=requests.get('')soup=BeautifulSoup(res.text,'html.parser')print(soup.select('img'))输出:

发现输出的内容不包含我们想要的图片元素,而是只解析了logo的img,这显然不是我们想要的。也就是说,所需的图片信息不在这个URL中。因此,认为该元素可以是动态的。细心的同学可能会发现,在网页上向下滑动鼠标滚轮时,图像会动态刷新。也就是说,网页并不是一次性加载所有资源,而是动态加载资源。这样也可以防止网页过于臃肿,影响加载速度。痛苦的探索从下面开始。我们想要找到所有图片的真实URL。作者对此很陌生,并且在发现这一点方面经验不足。我找到的最后一个位置是F12NetworkXHR(单击XHR下的文件)预览。

我发现它和我们需要的元素有点接近。点击all_items,发现下面都是0123.一一对应,好像是图片元素。尝试打开一个网址。我发现确实是图片上的地址。找到目标后。单击XHR下的标题

获取第二行

请求网址:

尝试删除一些不必要的部分。诀窍在于,删除可能的部分后,访问不会受到影响。经作者筛选。最终得到的url:从字面上看,知道类别就可以进行分类。start是起始下标,len是长度,即图片的数量。好吧,让我们开始愉快的编码时间:

开发环境为Win7Python3.6。Python运行时需要用requests安装。

Python3.6安装请求应在CMD中输入:

?1pipinstallrequests作者也是在这里调试写的。这是发布的最终代码:

?importrequestsimportjsonimporturllibdefgetSogouImag(类别,长度,路径):n=lengthcate=Categoryimgs=requests.get(''+cate+'tag=%E5%85%A8%E9%83%A8start=0len='+str(n))jd=json.loads(imgs.text)jd=jd['all_items'imgs_url=[forjinjd:imgs_url.append(j['bthumbUrl')m=0forimgs_url:print('*****'+str(m)+'.jpg*****'+'正在下载.')urllib.request.urlretrieve(img_url,path+str(m)+'.jpg')m=m+1print('下载完成!')getSogouImag('Wallpaper',2000,'d:/download/Wallpaper/')程序运行时,作者仍然是小小激动。快来感受一下:

至此,爬虫程序的编程过程描述完毕。总的来说,找到需要爬取元素的URL是爬取很多方面的关键。

总结

以上就是本文的全部内容。希望本文的内容能够对大家的学习或者工作有所帮助。如果您有任何疑问,可以留言沟通。感谢您对服务器之家的支持。