豆瓣影评信息爬取 (爬虫)

代码块:

bash 复制代码
from lxml import etree
import requests

headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0'
}

url_list=[]
for i in range(0,5):
    i*=20
    urls=f"https://movie.douban.com/review/best/?start={i}"
    url_list.append(urls)
print(url_list)

detail_urls=[]
for url in url_list:
    response=requests.get(url,headers=headers)
    # print(response.status_code)
    content = response.content.decode('utf8')
    html=etree.HTML(content)
    detail_url = html.xpath('//div[@class="main-bd"]/h2/a/@href')
    detail_urls.append(detail_url)
    # print(detail_urls)
    # break

movies=[]
i=0
# 循环豆瓣网页的每一页
for page in detail_urls:
    # 循坏这页的网页每个连接
    for url in page:
        try:
            response=requests.get(url,headers=headers)
            content=response.content.decode('UTF-8')
            html=etree.HTML(content)
            # 抓取电影名
            # // *[ @ id = "content"] / div / div[2] / div[4] / div[2] / a
            title=html.xpath('//div[@class="subject-title"]/a/text()')[0][2:]
            # 抓取评论者和评分
            commenter=html.xpath('//header/a/span/text()')[0]
            rank=html.xpath('//heafer//span/@title')
            # 抓影评
            comment=html.xpath('//div[@id="link-report"]//p/text()')
            comment=''.join(comment)
            movie={
                "title":title,
                "commenter":commenter,
                # "rank":rank,
                # "comment":comment
            }
            movies.append(movie)
        except:
            continue
    i+=1
    print(f"第{i}页已经爬取完毕")

print(movies)

效果:

内容解释:

  1. etree.HTML(内容):将不是html的格式的内容转换成html

  2. etree.tostring(内容,encoding='UTF-8').decode('UTF-8'):如果不是UTF-8编码格式的内容,这里可以更改成UTF-8的内容

  3. etree.parse(文件路径):parse对html导入python并解析

  4. 自定解析器:

    如果在浏览器上保存网页到本地,在python中获取.html文件需要利用自定解析器来解析文件内容

python 复制代码
# 自定解析器
parser=etree.HTMLParser(encoding='UTF-8')
html=etree.parse(路径,parser=parser)
result=etree.tostring(html,encoding='UTF-8').decode('UTF-8')

xpath中的[1]表示第一个元素,而python中的第一个是从0开始,例如:[0]

相关推荐
跨境数据猎手6 小时前
跨境商城反向海淘系统开发全流程逻辑(上)
人工智能·爬虫·系统架构
上海云盾-小余8 小时前
网站恶意爬虫拦截策略:智能识别与封禁实操方案
网络·爬虫·安全·web安全
小白学大数据11 小时前
Scrapling:极简高效的 Python 智能爬虫框架
开发语言·爬虫·python·数据分析
深蓝电商API13 小时前
爬虫任务调度系统:基于Celery的定时+触发式采集方案
爬虫
WL_Aurora15 小时前
Python爬虫实战(七):Selenium自动化采集苏宁易购商品数据
爬虫·python·selenium
Python私教1 天前
Playwright MCP 用 a11y 树抓页面:比全量 DOM 省 token 的采集 Agent
爬虫
枫叶林FYL1 天前
项目九:异步高性能爬虫与数据采集中枢 —— 基于 Crawl<sub>4</sub>AI 与 Playwright 的现代化数据采集平台 项目总览
爬虫·python·深度学习·wpf
上海云盾-小余1 天前
恶意爬虫精准拦截:网站流量净化与资源守护方案
网络·爬虫·web安全
小白学大数据1 天前
深度探索:Python 爬虫实现豆瓣音乐全站采集
开发语言·爬虫·python·数据分析
烟雨江南aabb2 天前
Python第六弹:python爬虫篇:什么是爬虫
开发语言·爬虫·python