python从入门到放弃篇36(selenium库,request库,time库)开启万花筒联合爬取豆瓣小说图片

这几天,一直在研究爬取图片的方法,今天终于有了成效,赶紧发文纪念一波。

这次,我选择的是三个库联合爬取,我觉得这样可能效果会更好一点。安装selenium库和requests库的方法,我之前的博文有说,需要的同志可以参见我前面写的博文,自行安装和下载,当然,安装过程中遇到困难,也可以与我私聊探讨,我很乐意帮助你。

这次,我们的案例网址是:https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4

完整代码:

from lxml import etree
from selenium import webdriver
import time
import urllib.request
import requests

options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=options)

url = 'https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4'
driver.get(url)

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
}
html = driver.page_source
select = etree.HTML(html)
for i in range(1,21):
    xpath_road = '//*[@id="subject_list"]/ul/li['+str(i)+']/div[1]/a/img/@src'
    img_href = select.xpath(xpath_road)
    #print(img_href)
    for e in img_href:
        print(e)
        img = requests.get(e,headers=headers)
        with open('img{}.jpg'.format(i),'wb+') as f:
            f.write(img.content)
            time.sleep(1.5)

我们捋一下思路,想要爬取图片,我们就得先获得它的链接地址,然后,对图片的链接地址进行请求,再以二进制的形式写入图片文件,最后,保存到本地计算机上,这就是整个的流程。此次,我们要爬取的内容如下图,左侧红框中的图书图片:
在这里插入图片描述

首先,我们导入可能需要用到的库,如下图:
在这里插入图片描述
接着,我们开启万花筒模式(无头模式),代码如下图:
在这里插入图片描述
然后,请求网页:
在这里插入图片描述
之后,设置请求报头:
在这里插入图片描述
接着,我们用driver函数page_source()获取当前页面的源代码,再将获取的源代码传递给etree的函数HTML,创建xpath选择器select
在这里插入图片描述
然后,我们去观察一下网页结构,分析一下:
在这里插入图片描述
图片在标签img里面,所以,我们接着就要提取对应的xpath路径。所以有:
在这里插入图片描述
我们如果翻到这一页的最后一张图图片,我们会根据xpath路径得出一个规律:
在这里插入图片描述
随着图片往下走,变动的仅仅只是li标签的序号,其他的内容没有变动。所以,我们使用for循环构造li标签的序号又因为我们提取的图片链接在属性src中,所以,我们要匹配属性src,所以有:
在这里插入图片描述
这里的图片链接是用xpath方法提取的,所以是以列表形式返回提取结果。因此,我们要循环,把链接打印出来,所以有:
在这里插入图片描述
运行结果:
在这里插入图片描述
当然了,我们还差最后一步,就是把图片保存到本地计算机中,请求图片的链接地址,然后,以二进制的形式写入图片文件中,我们的图片不能重名,用格式化字符串的方法,将对应图片的循环次数作为图片名,避免重名,所以有:
在这里插入图片描述
运行结果,我们去对应的编辑器文件夹(目录)下面找到爬取下来的图书图片:
在这里插入图片描述
pycharm编辑器
中也可以看见,如下图:
在这里插入图片描述
直接打开图片,效果如下:
在这里插入图片描述
pycharm编辑器中打开,效果如下:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
后面还有很多图片,我就不全部截图了,请大家见谅。

最后,感谢大家前来观看鄙人的文章,文中或有诸多不妥之处,还望指出和海涵。搞了半个上午加一个下午的时间,终于懂了爬取图片的方法,过瘾,有点困了,先睡一波觉,再起来接着搞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不羁_神话

感谢支持,欢迎交流。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值