前言
利用利用requests+xpath爬取豆瓣影评,废话不多说。
让我们愉快地开始吧~
开发工具
Python版本:3.6.4
相关模块:
requests模块;
jieba模块;
pandas模块
numpy模块
pyecharts模块;
以及一些Python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
前期准备
1.获取页面内容
# 爬取页面 url\ douban_url = 'https://movie.douban.com/subject/26647117/comments?status=P'\ # requests 发送请求\ get_response = requests.get(douban_url)\ # 将返回的响应码转换成文本(整个网页)\ get_data = get_response.text
2.分析页面内容,获取我们想要的内容
- 浏览器中打开我们要爬取的页面
- 按F12进入开发者工具,查看我们想要的数据在哪里
- 这里我们只要 评论人+评论内
- 分析我们获取的 xpath值
'/html/body/div[3]/div[1]/div/div[1]/div[4]/**div[1]** /div[2]/h3/span[2]/a' '/html/body/div[3]/div[1]/div/div[1]/div[4]/**div[2]** /div[2]/h3/span[2]/a' '/html/body/div[3]/div[1]/div/div[1]/div[4]/**div[3]** /div[2]/h3/span[2]/a'
- 通过观察我们发现,这几个xpath只有细微不同,上面加粗的部分已数加的格式改变,所以我们要爬取所有的 commentator(评论者),只需把xpath改为:
'/html/body/div[3]/div[1]/div/div[1]/div[4]/**div**/div[2]/h3/span[2]/a'
即不要后面的序号,当我们查询时,会自动捕获类似的xpath。
- 同样的分析,我们可以得到评论内容的xpath为:
'/html/body/div[3]/div[1]/div/div[1]/div[4]/**div**/div[2]/p'
# (跟在上面代码后)解析页面,并输出获取内容\ a = etree.HTML(get_data)\ commentator = s.xpath('/html/body/div[3]/div[1]/div/div[1]/div[4]/div/div[2]/h3/span[2]/a/text()')\ comment_content = a.xpath('/html/body/div[3]/div[1]/div/div[1]/div[4]/div/div[2]/p/text()')\ # 解析获取内容,去除多余内容\ for i in range(0,len(files)):\ print(commentator[i]+'说:')\ file