爬取豆瓣头号玩家短评

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30500113/article/details/83785165

目标链接:https://movie.douban.com/subject/4920389/comments?start=0&limit=20&sort=new_score&status=P
在这里插入图片描述

来看看我们要爬哪些数据吧

  1. 作者
  2. 评论内容
  3. 时间
  4. 有用数

在这里插入图片描述

打开浏览器 F12查看源码 看看我们要获取的数据在哪里
在这里插入图片描述

在这里插入图片描述

我们获取到id为comments下的每一个class为comment-item的div 然后解析其中的内容就可以啦

下面是代码部分:

#!/usr/bin/env python 
# -*- coding: utf-8 -*-
# @Time    : 2018/11/6 11:17
# @Author  : Xi.He
# @Desc    : 爬取豆瓣电影 头号玩家短评
import requests
import json
from pyquery import PyQuery as pq


headers = {
    'proxy': 'https: 59.57.151.126:37749',
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36'
                  ' (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
}


def get_page(url):
    """发送请求获得源码"""
    r = requests.get(url)
    return r.text


def parse(text):
    """解析数据 获得内容"""
    doc = pq(text)
    items = doc('div#comments div.comment-item').items()
    for item in items:
        scope = {}
        scope['name'] = item.find('span.comment-info a').text() # 作者
        scope['time'] = item.find('span.comment-time').text()   # 发表时间
        scope['speak'] = item.find('span.short').text() #评论
        scope['votes'] = item.find('span.votes').text() #有用数
        result_list.append(scope)
    return result_list


def write_json(result):
    """将数据保存成json文件"""
    s = json.dumps(result, indent=4, ensure_ascii=False)
    with open('头号玩家评论.json', 'w', encoding='utf8') as f:
        f.write(s)
    print('写入完成!')


if __name__ == '__main__':
    result_list = []
    # 获取10页链接
    for i in range(11):
        url = 'https://movie.douban.com/subject/4920389/comments?start={}' \
              '&limit=20&sort=new_score&status=P'.format(i * 20)
        text = get_page(url)
        result = parse(text)
    write_json(result)

运行程序:这里我们获取到的是10页的信息
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_30500113/article/details/83785165