Python采集电影评论实战示例
作者:极客飞虎 发布时间:2022-02-25 22:14:37
数据采集
我们上一篇介绍了,如何采集王者皮肤,买不起皮肤,当个桌面壁纸挺好的。我们今天来学习如何采集电影评论,看看这个电影好不好看。
发送请求
我们首先确定我们的目标网址,对我们需要获取的数据。
我们要把每一个评论获取下来,我们接下来用到开发者工具。我们看评论是在什么位置。是不是在网页源代码中。接下来,我们发送请求,获取网页源代码。
url = 'https://movie.douban.com/subject/35267208/comments'
params = {
'start': f'{num}',
'limit': '20',
}
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36',
}
res = requests.get(url, headers=headers, params=params)
print(res)
这段代码中,我们首先定义了一个 URL,然后使用 requests.get()
函数获取该 URL 的数据,并将其存储在 res
变量中。最后,我们打印出 res
变量的值,即获取到的数据。
在这个例子中,我们使用了 params
参数来指定获取数据的起始位置和每页显示的记录数。在这个例子中,我们指定了起始位置为第 num
条记录,每页显示 limit
条记录。
请注意,这个例子中使用的 user-agent
头部是为了模拟浏览器的行为。在实际应用中,我们应该使用 User-Agent
头部来指定我们的请求类型,例如 requests.get()
函数默认使用 'requests/2.18.4'
作为 User-Agent。
解析数据
我们还可以获取其他信息,比如讲,地区,时间之类的。
我们先解析数据。
selector = parsel.Selector(res.text)
info_lists = selector.css('div.comment-item')
这段代码中,我们首先使用 parsel
库中的 Selector
类来解析 res.text
中的内容,并将其转换为 CSS 选择器。然后,我们使用 css
方法来获取 CSS 选择器中的所有 div
元素,并将其存储在 info_lists
变量中。
需要注意的是,parsel
库中的 Selector
类是一个比较底层的 CSS 解析器,它并不会对 CSS 选择器进行任何优化或转换。因此,在使用 Selector
类时,我们需要确保输入的 CSS 选择器是有效的,并且不会包含任何无效的 CSS 属性或值。
获取内容
for info_list in info_lists:
# print(info_list)
name = info_list.css('.comment-info a::text').get()
rating = info_list.css('.rating::attr(title)').get()
times = info_list.css('.comment-time::attr(title)').get()
area = info_list.css('.comment-location::text').get()
vote_count = info_list.css('.vote-count::text').get()
short = info_list.css('.short::text').get()
这段代码中,我们使用 for
循环遍历 info_lists
中的每一个元素,并使用 css
方法获取该元素的 text
属性值。然后,我们使用 get()
方法获取该属性值的 title
属性值,并将其存储在 name
变量中。接着,我们使用 get()
方法获取该属性值的 title
属性值,并将其存储在 rating
变量中。最后,我们使用 get()
方法获取该属性值的 title
属性值,并将其存储在 times
变量中。最后,我们使用 get()
方法获取该属性值的 title
属性值,并将其存储在 area
变量中。最后,我们使用 get()
方法获取该属性值的 title
属性值,并将其存储在 vote_count
变量中。最后,我们使用 get()
方法获取该属性值的 title
属性值,并将其存储在 short
变量中。
输出内容
print(name, rating, times, area, vote_count, short)
这段代码中,我们使用 print()
函数打印出了名称、评分、时间、地点、投票数和简短描述。
来源:https://juejin.cn/post/7222189908428324901


猜你喜欢
- 我的读者知道我是一个喜欢痛骂Python3 unicode的人。这次也不例外。我将会告诉你用unicode有多痛苦和为什么我不能闭嘴。我花了
- 事件背景最近业务研发反映了一个需求:能不能让现有基于 gin 的 webservice 框架能够自己输出 response 的信息,尤其是
- YUI 中的 Grids CSS 主要有三个部分值得大家关注和学习:Yahoo!网站性能最佳体验的34条黄金守则—内容 1、布局的思想:使用
- 有时候希望可以用js另开新窗口,但用window.open方法打开窗口总是被浏览器阻止,可以用下面的方法打开新窗口而不会遭到拦截1.新添加一
- 方法一:#-*- coding:utf-8 -*-from sqlalchemy import create_engineclass mys
- <html> <head> <meta charset="utf-8"/> <
- python方法实现字符串反转方法一:反转列表法Python中,列表可以进行反转,我们只要把字符串转换成列表,使用reverse()方法,进
- 由于Node.js仅支持如下编码:utf8, ucs2, ascii, binary, base64, hex,并不支持中文GBK或GB23
- 什么是restREST是所有Web应用都应该遵守的架构设计指导原则。Representational State Transfer,翻译是”
- functools模块是Python的标准库的一部分,它是为高阶函数而实现的。高阶函数是作用于或返回另一个函数或多个函数的函数。一般来说,对
- 本文实例讲述了Python Scrapy框架:通用爬虫之CrawlSpider用法。分享给大家供大家参考,具体如下:步骤01: 创建爬虫项目
- argparse 模块是Python内置的用于命令项选项与参数解析的模块,可以轻松编写友好的命令行接口,能够帮助程序员为模型定义参数。传入一
- 说实在的个人对游戏并没有多大的兴趣,但唯独对暴雪的Diablo系列很有感情,去年年初开始玩Diablo3,断断续续,感觉最麻烦的是选择技能,
- 一直都是简单去js实现cookie的一些操作,今天把js对cookie操作系统的整理了一遍,包括:js读取cookie,js添加cookie
- GO语言结构体方法跟结构体指针方法的区别首先,我定了三个接口、一个结构和三个方法:type DeptModeA interface {Nam
- 1)当我们拿到一个题目时,首先会根据已经知道的条件,进行数据的初步整理和分析。相当于填写出9宫格里,所有的“确定项”,以及标记“可能选项”。
- IE在处理透明度上真够恶心,而且在IE7必须让元素的hasLayout为ture,要不会失效。以下是我最新处理透明度的代码:var 
- 一个等号是赋值操作,==先转换类型再比较,===先判断类型,如果不是同一类型直接为false。=== 判断规则如果类型不同,就[不相等]&n
- 使用pandas处理向量化的数据,进行数据的替换时不仅仅能够进行字符串的替换也能够处理数字。做简单的示例如下:In [4]: data =
- 题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。这个题目完