首页 > 其他分享 >豆瓣影评数据抓取

豆瓣影评数据抓取

时间:2024-08-12 23:18:11浏览次数:10  
标签:url list 抓取 bt 豆瓣 details urls response 影评

豆瓣影评数据抓取

创建时间:2024-08-12

抓取豆瓣影评相关数据的代码,包括封面、标题、评论内容以及影评详情页的数据。

一、完整代码

'''
https://movie.douban.com/review/best/
抓取封面 标题 评论內容
抓取完整的评论内容 也就是点击展开后的完整的
抓取当前影评的详情页的数据
抓取影评多页 封面 标题 完整评论内容 以及影评的详情页的数据
'''
import json
import re
import requests
from lxml import etree

url = 'https://movie.douban.com/review/best/'
header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'
}
response = requests.get(url, headers=header)
response.encoding = 'utf-8'
html = response.text
tree = etree.HTML(html)
fm_urls = tree.xpath('//div[@class="review-list chart "]//a[@class="subject-img"]/img/@src')
bt_list = tree.xpath('//div[@class="main-bd"]/h2/a/text()')

# for fm, bt in zip(fm_urls, bt_list):
#     res = requests.get(fm, headers=header)
#     with open('./imgs/' + bt + '.jpg', 'wb') as f:
#         f.write(res.content)
#         print(bt + ' 已保存')
details_list = tree.xpath('//div[@class="main-bd"]/h2/a/@href')
details_urls = []
for i in details_list:
    num = re.findall(r'\d+', i)[0]
    details_url = f'https://movie.douban.com/j/review/{num}/full'
    details_urls.append(details_url)
# https://movie.douban.com/j/review/15980218/full
for bt, details_url in zip(bt_list, details_urls):
    response = requests.get(details_url, headers=header)
    response.encoding = response.apparent_encoding
    data = json.loads(response.text)
    # print(data['body'])
    datatree = etree.HTML(data['body'])
    details = datatree.xpath('//text()')
    # print(details)
    detailedInfo = '\n' + bt + '\n' + ''.join(details)
    with open('detail.txt', 'a+', encoding='utf-8') as f:
        f.write(detailedInfo)
        print(f'{bt}详情的内容全部下载完毕!!!')

    # exit()

二、代码详解

2.1 基本设置

导入了所需的库,并设置了要访问的豆瓣影评页面的 URL 和请求头,以模拟真实的浏览器访问。

import json
import re
import requests
from lxml import etree

url = 'https://movie.douban.com/review/best/'
header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'
}

2.2 发送请求并获取页面的 HTML 内容

response = requests.get(url, headers=header)
response.encoding = 'utf-8'
html = response.text
tree = etree.HTML(html)

2.3 使用 xpath 方法提取出封面图片的 URL 和标题

fm_urls = tree.xpath('//div[@class="review-list chart "]//a[@class="subject-img"]/img/@src')
bt_list = tree.xpath('//div[@class="main-bd"]/h2/a/text()')

2.4 保存封面图片

for fm, bt in zip(fm_urls, bt_list):
    res = requests.get(fm, headers=header)
    with open('./imgs/' + bt + '.jpg', 'wb') as f:
        f.write(res.content)
        print(bt + ' 已保存')

2.5 获取影评详情页的 URL 并构建完整的请求链接

details_list = tree.xpath('//div[@class="main-bd"]/h2/a/@href')
details_urls = []
for i in details_list:
    num = re.findall(r'\d+', i)[0]
    details_url = f'https://movie.douban.com/j/review/{num}/full'
    details_urls.append(details_url)

2.6 获取影评详情页的完整内容并保存

for bt, details_url in zip(bt_list, details_urls):
    response = requests.get(details_url, headers=header)
    response.encoding = response.apparent_encoding
    data = json.loads(response.text)
    # print(data['body'])
    datatree = etree.HTML(data['body'])
    details = datatree.xpath('//text()')
    # print(details)
    detailedInfo = '\n' + bt + '\n' + ''.join(details)
    with open('detail.txt', 'a+', encoding='utf-8') as f:
        f.write(detailedInfo)
        print(f'{bt}详情的内容全部下载完毕!!!')

三、效果

3.1 封面

3.2 信息

标签:url,list,抓取,bt,豆瓣,details,urls,response,影评
From: https://www.cnblogs.com/suifeng2000/p/18355894

相关文章

  • 爬虫如何使用HTTPS代理,让数据抓取更稳更快
    在网络爬虫的世界里,使用HTTPS代理就像是给你的爬虫装上了“隐形斗篷”,不仅能提高抓取效率,还能保护你的隐私。今天,我们来聊聊如何在爬虫中使用HTTPS代理,让你的数据抓取更稳更快。为什么要使用HTTPS代理?在进行数据抓取时,使用HTTPS代理有几个显著的好处:提高抓取效率:通过使用......
  • python实现抖音评论实时抓取并语音播报
    importtime#事件库,用于硬性等待importthreadingfrombs4importBeautifulSoupfromseleniumimportwebdriver#导入selenium的webdriver模块fromselenium.webdriver.chrome.serviceimportServicedefpyttsx3_debug(text,language,rate,volume,filename,sayi......
  • Python爬虫实战入门:豆瓣电影Top250(保你会,不会来打我)
    需求目标网站:https://movie.douban.com/top250需求:爬取电影中文名、英文名、电影详情页链接、导演、主演、上映年份、国籍、类型、评分、评分人数,并保存到csv文件当中目标url:https://movie.douban.com/top250所需第三方库requestslxml安装requests安装命令......
  • Python 爬虫项目实战六:抓取猫眼电影排行榜的数据
    在这篇博客中,我们将通过一个实际的Python爬虫项目,详细讲解如何抓取网页数据。本次选择的实战项目是抓取猫眼电影排行榜的数据,通过这个项目,你将学会如何使用Python编写爬虫,从网页中提取有用的电影信息。一、项目准备在开始之前,确保你已经安装了Python和以下几个关键的库:requ......
  • 使用 Python 爬取豆瓣电影 Top250 多页数据
    使用Python爬取豆瓣电影Top250多页数据创建时间:2024-08-11一、完整代码'''抓取单贞数据中的评分简介评价人数将上面的改为多页https://movie.douban.com/top250?start=0'''importrequestsfromlxmlimportetreeheader={'User-Agent':'Mozilla/5.0......
  • 彼岸网壁纸抓取
    彼岸网壁纸抓取创建时间:2024-08-11一、代码1.1代码importosimportrandomimporttimeimportrequestsfromlxmlimportetreeurl='http://pic.netbian.com/'header={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/......
  • 豆瓣短评榜单短评下载
    豆瓣短评榜单短评下载创建时间:2024-08-07一、完整代码importrequestsfromlxmlimportetreedefget_html(main_url):header={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/125.0.0.0Safar......
  • Python网络爬虫抓取动态网页并将数据存入数据库MySQL
    简述以下的代码是使用python实现的网络爬虫,抓取动态网页http://hb.qq.com/baoliao/。此网页中的最新、精华下面的内容是由JavaScript动态生成的。审查网页元素与网页源码是不同。以上是网页源码以上是审查网页元素所以此处不能简单的使用正则表达式来获取内容。......
  • 豆瓣8.7,从弱小到剑客:揭秘阿水的艰难复仇故事
    《蓝眼武士》这部2023年的动画以其独特的背景和深刻的剧情引发了广泛关注。由厄尔·A·希伯特和简·吴执导,迈克尔·格林和AmberNoizumi编剧,这部动画在11月3日的美国首播引发了不少讨论。玛雅·厄斯金、田川洋行、丘增、达伦·巴内特和武井乔治等配音演员为角色带来了生动的演......
  • 如何使用 beautifulsoup4 选择部分 HTML 标签进行网页抓取
    这是我试图从中抓取数据的网站的链接:https://www.fotmob.com/leagues/47/stats/season/20720/players/goals/premier-league我想使用beautifulsoup4选择class='css-653rx1-StatsContainereozqs6r5'的部分。在您提到find()和find_all()之前,我已经使用了两......