继续创造,加快生长!这是我参与「掘金日新计划 4 月更文挑战」的第6天,点击检查活动概况

数据收集

咱们上一篇介绍了,如何收集王者皮肤,买不起皮肤,当个桌面壁纸挺好的。咱们今日来学习如何收集电影谈论,看看这个电影好不美观。

发送恳求

咱们首要确认咱们的目标网址,对咱们需求获取的数据。

【Python实战】Python采集电影评论

咱们要把每一个谈论获取下来,咱们接下来用到开发者工具。咱们看谈论是在什么方位。是不是在网页源代码中。接下来,咱们发送恳求,获取网页源代码。

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。

解析数据

咱们还可以获取其他信息,比方讲,地区,时间之类的。

【Python实战】Python采集电影评论

咱们先解析数据。

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()函数打印出了称号、评分、时间、地址、投票数和简短描绘。

总结

在这个比方中,咱们运用了parsel库中的Selector类和css办法来获取网页中的 CSS 选择器,并将其转换为相应的特点值。咱们还可以运用其他办法来解析数据,例如运用params参数来指定获取数据的开始方位和每页显现的记载数,运用headers参数来指定 User-Agent 头部。咱们还可以运用其他开发者工具来获取更多数据,例如运用网页源代码来获取网页中的所有谈论。