java爬虫爬豆瓣图书_网络爬虫——爬取豆瓣图书

作者:徐浩 来源:人工智能学习圈

3.2.1 目标

目标地址:https://book.douban.com/top250?start=0

任务:爬取豆瓣图书TOP250,及其‘书名’、‘出版信息’、‘评分’、‘评价人数’四个数据

3.2.2 分析URL

首先先打开目标地址对url进行分析

观察第一页豆瓣图书如下:

java爬虫爬豆瓣图书_网络爬虫——爬取豆瓣图书_第1张图片preview

第二页豆瓣图书如下:

java爬虫爬豆瓣图书_网络爬虫——爬取豆瓣图书_第2张图片

最后一页豆瓣图书如下:

java爬虫爬豆瓣图书_网络爬虫——爬取豆瓣图书_第3张图片

我们可以发现url的结构是如何变化的,每一次的翻页所对应改变的是start参数的值,那么我们就可以构造urls:

3fa7f223f5e198452ba4e203626aecf7.png

3.2.3 请求网页

java爬虫爬豆瓣图书_网络爬虫——爬取豆瓣图书_第4张图片

我们看到其中有response.encoding = 'utf-8',这个可以根据标签中的信息分析得到,还可以改为response.encoding=response.apparent_encoding

java爬虫爬豆瓣图书_网络爬虫——爬取豆瓣图书_第5张图片

这个的意思是说,把响应的结果的 html 源码的编码格式设置成 utf-8,不这样做的话,我们提取到的数据中如果有中文的,那显示就会是乱码

3.2.4 分析数据

鼠标放在目标元素位置,右键-检查,我们看到第一本书的我们需要的详细信息都在

里面,

java爬虫爬豆瓣图书_网络爬虫——爬取豆瓣图书_第6张图片

所以我们需要提取这一页的所有的标签:

infos = html.xpath('//tr[@class="item"]')

返回的是一个列表,再一次循环列表的每一个标签,从中提取出对应的数据,其实不用提取数据的 xpath 路径不需要去看路径张啥样在去手敲进去,可以复制得,但需要修改

我们以提取书名为例,在书名那里右键-检查,如下图,复制出 xpath 路径

java爬虫爬豆瓣图书_网络爬虫——爬取豆瓣图书_第7张图片

粘贴代码为://*[@id="content"]/div/div[1]/div/table[1]/tbody/tr/td[2]/div[1]/a

我们观察我们已经提取的 tr 标签 '//tr[@class="item"]' ,在看上面找到 tr ,以它为断点(包含它),前面的删掉改成如下:

name = info.xpath('./td[2]/div[1]/a/text()')[0]

因为我们已经提取了一大包含我们需要的数据的大标签 tr,是从中再提取数据,所以前面多余的删掉,包含 tr 也删掉,因为是从它的里面提取

另外数据同理,所以可写代码:

java爬虫爬豆瓣图书_网络爬虫——爬取豆瓣图书_第8张图片

提取后,我们需要用 replace 把多余字符去掉,最后打印

到这里接就完成了提取数据

3.2.5 小结

完整代码如下:

java爬虫爬豆瓣图书_网络爬虫——爬取豆瓣图书_第9张图片

运行结果如下:

java爬虫爬豆瓣图书_网络爬虫——爬取豆瓣图书_第10张图片

欢迎大家加入人工智能圈参与交流

原文链接: https://zhuanlan.zhihu.com/p/140246883

你可能感兴趣的:(java爬虫爬豆瓣图书)