豆瓣影评爬取——哥斯拉大战金刚短评

豆瓣影评爬取——哥斯拉大战金刚短评(小白初学)

1、抓取网页数据

使用python爬虫技术xpath、requests进行爬取哥斯拉大战金刚的短评网页,网页地址:
https://movie.douban.com/subject/26613692/comments
其中,26613692为《哥斯拉大战金刚》的电影ID号,以上网页可以获取20个影评,我们可以指定start参数来获取更多的影评,例如:
https://movie.douban.com/subject/26900949/comments?start=40&limit=20
表示从第 40条开始的20条影评。

(1)导入模块
from lxml import etree  #用于解析网页
import requests
#由于网页会对我们的useragent和cookie进行检查,所以在爬取的时候要带上cookie,而且如果一直用一个useragent也会被识别出来,所以得采用不同的useragent。
from fake_useragent import UserAgent
#用于设置睡眠时间  
import time
(2)设置不同的useragent
headers = {
    'User-Agent' : UserAgent().random
}
(3)抓取到网页源数据
url = 'https://movie.douban.com/subject/26613692/comments?
page_text = requests.get(url=url, headers=headers).text
(4)网页数据解析
tree = etree.HTML(page_text)
(5)找到我们需要的短评数据的标签对象

#//表示直接定位到这个标签的位置,/表示标签的下一级标签,text()表示我们抓取的是文本数据
comments = tree.xpath('//p[@class=" comment-content"]/span/text()')
(6)写入txt文件

注:如果你写入的文件不存在,函数open()会自动创建它。
用写入 'w’模式打开文件时,如果指定的文件已将存在,python将在返回文件对象前清空文件,并写入你要写入的东西。
用 'r+’模式,写入的字符串的长度,将会覆盖你原有的字符串的位置
用附加模式 ‘a’ ,python不会在返回文件前清空,而是将文本添加到文件的末尾。

  fp = open('short_comments.txt', 'a', encoding='utf-8')
    for comment in comments:
        fp.write(comment)
以上代码全部运行将爬取第一页所有影评的内容,如果需要爬取更多则需要设置start参数用循环来进行爬取,直接上完整代码如下:
from lxml import etree
import requests
from fake_useragent import UserAgent
import time

headers = {
    'User-Agent' : UserAgent().random
}

#指爬取到页面源码数据,range(0,100)表示爬取100页的影评数据
for i in range(0,100):     
    url = 'https://movie.douban.com/subject/26613692/comments?start='+str(i*20)

    page_text = requests.get(url=url, headers=headers).text
    #数据解析
    tree = etree.HTML(page_text)
    #标签对象
    comments = tree.xpath('//p[@class=" comment-content"]/span/text()')
    #print(comments)
    fp = open('short_comments.txt', 'a', encoding='utf-8')
    for comment in comments:
        fp.write(comment)
    print("第{}页爬取成功".format(i+1))
    time.sleep(10)  #设置睡眠时间
    
print("爬取成功")


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值