python从入门到放弃篇26(lxml.etree库,urllib.request库,构造xpath路径,构造url)实现翻页爬取豆瓣书简介并保存数据

今天,我研究了构造url和xpath路径的方法实现翻页爬取数据。觉得还可以,不过还是存在一些问题,没有我想的那么理想,因为,目前只实现了爬取每一页的第一本书及其书评。我等有时间会再去研究。

第一步,我们要先导入各种需要的库。
在这里插入图片描述
之所以导入时间库,是为了控制爬取速度,基本的爬虫对抗反爬手段,还有一个目的就是不要瞬间多次请求网页资源,容易导致网页崩溃(道德问题)。

第二步,我们打开百度搜索,搜索豆瓣,出现如下图,然后,我们选择豆瓣读书,点击链接进去。
在这里插入图片描述
找右侧,看见如下画面,找到小说专栏,点击进去。
在这里插入图片描述
看见如下画面:
在这里插入图片描述
然后,我们往下翻滚动条,发现,它总共380页个页面。其实只有50页。
在这里插入图片描述
之后,我们要是仔细观察它的网页链接,会发现新鲜的事情。它的网页会随着你点击页面的变化而变化。而且,这种变化是规律性变化
在这里插入图片描述
在这里插入图片描述
我们发现,每往后翻一页,start的值增加20,因此,我们就可以根据这种规律来用for循环构造新的爬取链接。所以有:
for i in range(0,981,20):
new_url = ‘https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4?start=’+str(i)+’&type=T’#构建新的url。
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 Edg/83.0.478.64’
}
request = urllib.request.Request(new_url, headers=headers)#传递请求报头参数,并向服务器发出新的请求。
response = urllib.request.urlopen(request)#获取服务器反馈的响应,即分配的网络资源。
html = response.read().decode(‘utf-8’)
time.sleep(3)#休息3秒钟,再接着访问网页,请求网页,反爬虫对抗方案,道德问题。
select = etree.HTML(html)

第三步,我们需要构建xpath路径,先复制xpath路径来观察一下:
//[@id=“subject_list”]/ul/li[1]/div[2]/h2/a
//
[@id=“subject_list”]/ul/li[2]/div[2]/h2/a

通过对比观察,我们发现路径中,仅仅只是li标签的序号不一样。之后的文本,也是同样复制xpath路径来进行对比观察,我们翻页发现,它的网页结构是一样的,所以就有:
在这里插入图片描述
用for循环构造xpath路径,输出结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后面还有很多内容,就不全部列出了,我试过点击这些对应的链接,可以链接到对应的书籍。例如人间失格这本书,点击链接后:
在这里插入图片描述
好了,既然已经搞定翻页爬取,那我们得把数据留来做一下纪念,所以修改代码后:
在这里插入图片描述

运行结果,我们会在pycharm编辑器的文件夹(目录)下,生成豆瓣小说.txt文件,等程序执行完后,会显示如图的结果。
在这里插入图片描述
我们去对应编辑器路径下找到文件,打开看看。
在这里插入图片描述
在这里插入图片描述
后面还有很多,就不挨个截图了,在编辑器中打开,如下图:
在这里插入图片描述
感谢很不错,又有新的收获了。

最后,感谢大家前来阅读鄙人的文章,文中或有诸多不妥之处,还望指出和海涵。

猜你喜欢

转载自blog.csdn.net/weixin_43408020/article/details/107463497