目标:抓取豆瓣小王子读者的书评,并保存于本地excel。
爬虫的流程:发送请求——获得页面——解析页面——抽取并储存内容。
我们第一个案例便采用:requests(获取)——xpath(解析)——pandas(储存)
废话不多说,先上结果与代码:
# -*- coding: utf-8 -*- #告知用utf-8编码
#获取
importrequests#引入requests
r = requests.get('https://book.douban.com/subject/1084336/comments/hot?p=1')#用get方法获取网页
html = r.text#把内容赋值给html
#解析
fromlxmlimportetree#引入lxml的etree
s = etree.HTML(html)#把html转换成lxml可解析的对象
text_list = s.xpath('//*[@id="comments"]/ul/li/div[2]/p/text()')#解析这一页的text
#储存
importpandasaspd#引入pandas,简写成pd
df = pd.DataFrame(text_list)#定义DataFrame对象并赋给df
df.to_excel('D://comments.xlsx')#把结果输出为csv格式,存在D盘
不超过10行代码,是不是很简单呢?
现重点讲解解析部分xpath的用法:
首先鼠标左键选取到需要爬取的书评
右键,点击“检查”,在“Elements”下找到定位到所需数据
右键——Copy——Copy Xpath,即可完成Xpath的复制
示例:
结果:
//*[@id=“comments”]/ul/li[1]/div[2]/p
在xpath中,获取文本信息只需在后加text()
//*[@id="comments"]/ul/li[1]/div[2]/p/text()
使用从浏览器复制Xpath的方法获取同一网页下不同短评的Xpath,通过对比发现其规律:
通过对比可以发现从浏览器复制的Xpath中,“li[]”括号中的数字代表对应的第几条评论,直接删除括号,即可获取当前页面全部短评。
总结:
1:Python爬虫,上手其实很简单啦。
2:推荐新手使用pycharm编辑器,界面实在太友好了。
3:想要实现这个爬取,首先,你要安装request、xpath、pandas等第三方库哦,网上很多安装教程,在这我就不累赘了。
4:每个软件、第三方库内容太多,我们不可能都去学,所以我们只需要去学习我们当前需要的知识就Ok了(学不在多,在于消化)。
下一篇文章,将扩大难度,抓取小王子书评前100页的内容,大家可以提前思考下,怎样实现翻页哦。
有不清楚的地方,大家可以留言,点赞哦,我看到了,会第一时间回复你。
本文首发于微信公众号,喜欢的可以关注下哦
公众号:工科男雷先生
网友评论