Python爬虫爬取图片

Python爬虫爬取网站指定图片(多个网站综合经验结论分享)

我想以这篇文章来记录自己学习过程以及经验感受,因为我也是个初学者。接下来我将分享几个我爬取过的图片网站,给大家们分享下自己的方法经验。嘿嘿!

我选了以下两个具有代表性的网站进行分享

网站1: 摄图网

第一步:导入需要用到的库:requests、BeautifulSoup和time

第二步:伪装自己的爬虫

因为很多网站都是有反爬虫的,所以我们需要把我们的头部伪装一下。不然我们的PyCharm就会很老实的告诉浏览器,这是一个爬虫来对你的网站进行浏览爬取。所以我们要改变我们的头部。

打开网页后,按F12,检查。然后点击Network,再按F5进行刷新,找到第一个之后会出现另一个界面,点击headers,翻到最下面,User-Agent就是我们需要的伪装的头部信息。

代码是这样的:


第三步:观察网页的链接信息

第一个函数:我们观察网站,它不是只有一页,因此我们就需要进行翻页操作。我们就用for循环来进行,然后我们需要观察每一页的链接的变化来找规律。我们可以借助记事本来找规律,如下图:


不难发现规律,只是后面的2、3在改变。但是第一页的不一样,我们就把2改成1看是否可以成功的跳转到第一页。这个网站是可以的,如果不可以的话我们就用if语句来解决,这个在下面另一个的网站我会给大家说到。做好这一步之后我们就把值代入下一个函数。


这个函数也是我们的主函数,在最后的最后需要我们去调用它


第四步:向网站发起请求访问,看是否访问成功

第二个函数:这里就用到了requests库,get便是向网站发起访问请求,想知道是否访问成功,便要用到r.status_code,将其print,若结果是200,便是访问成功。若为404或其它,则是访问失败,便要去查看前面哪里出错了。为了避免出现乱码的情况,我们需要将编码格式改为“utf-8”或者等于r.apparent_encoding。r.text是网页的内容,我们将这个内容带给下一个函数。


第五步:解析网页的内容,并分析找到图片的标签位置

第三个函数:这里就需要用到BeautifulSoup库了,将上一个函数带来的内容用html.parser解析器进行解析。然后用到BeautifulSoup的find_all函数来对所需要的标签内容进行查找,用打印找的内容进行长度输出的方式来验证自己是否查找成功。因为找到的是多个,因此需要挨个输出。这个网站的照片是放在img标签的data-original属性里面的,并不是src属性里面。若是用src属性则爬取到的图片将是黑色的什么都没有,用data-original属性爬取的才是正确的。至于为什么,这个应该就是JavaScript的知识内容了,这里就不做解释了。并且data-original属性里面的内容还需要在前面加上https:,因为它本身缺少了这个东西,因此我们就需要给它加上。然后将这个内容代给下一个函数。

第六步:将解析的照片存入到我们的文件夹中去

第四个函数:这里就用到了time,PyCharm自带的库。照片的命名方式用的是时间戳,并且放大了1000倍。我们将解析好的内容再次通过requests的get方法去到每一个图片特定的网址去下载。因为是图片,所以将其通过二进制的方式写入到我们的文件夹中去。这里使用的是相对路径,是写入到同级目录的image文件夹,这里的./可有可无,原因就是这个代码和image是在同级目录下。

这里就是爬取这个网站指定图片的的全部过程了。

下面是完整代码:

网站2:chinaz.com

这个网站爬取的过程大致和上面一个相同。

但不同的是第一个函数中用了if语句,因为它的第一页和之后的页规律是不一样的。(我们同样可以借助记事本去找寻和实验规律)


以及第三个函数的标签,这里有一个坑,那就是检查网页代码时显示的是在src属性里,但总是会报错。于是我查看了网页的源代码,发现不是src,而是src2,这个地方不去多注意还真发现不了。



下面是爬取这个网站指定图片的全代码:

每个网站的代码都会有自己不一样的地方,因此我们在爬取不同网站时,就会遇到不同的问题。但是,只要我们下功夫去研究,就一定能解决问题!

文中有解释不到位或者错误的地方,欢迎各位大佬们指正哦。

之后我还会继续分享自己的学习经历,让自己不断成长!

冲呀冲呀冲呀!!!

你可能感兴趣的:(Python爬虫爬取图片)