xpath翻页爬取

目标:

使用xpath+csv方式,获取豆瓣前250名电影的名称和影评

思路:

循环每一页电影,对每一部电影内容进行遍历,最后保存

python 复制代码
# xpath翻页获取数据(电影名+影评)并将其保存
# 思路:结构相似的情况下,就是参数问题

#引入请求头,csv保存,时间
import requests
import csv
import time
#创建表格的表头
#csv要求是可迭代对象即可
csv_data= [
    ('电影名称','电影评价')
]
#设置自己的身份
headers = {"user-agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0"}
#一共10页,需要10次循环
#翻页是参数的不同,对于get方式,url中找参数不同
#页数下标从0开始,对应参数值0开始,每次25增加
for i in range(10):
    #设置目标地址
    #找得是HTML框架,不是json数据且为静态数据,从url或是标头中得到即可
    url=f'https://movie.douban.com/top250?start={i*25}&filter='
    #发送请求
    response=requests.get(url,headers=headers)
    #设置xpath需要的相关工具包
    from lxml import etree
    #将获取到的HTML格式字符串转换为python对象
    html_obj = etree.HTML(response.text)
    #使用xpath方式对python对象获取相关数据
    #1-10对应的网页结构一致
    #获取每页电影对应的总标签名
    m_list=html_obj.xpath('//*[@id="content"]/div/div[1]/ol/li')
    #循环每页每一部电影
    for item in m_list:
        # . 代表当前目录
        # 将电影名称完整路径拼接
        title = item.xpath('./div/div[2]/div[1]/a/span[1]/text()')
        # 将影评完整路径拼接
        yp = item.xpath('./div/div[2]/div[2]/p[2]/span/text()')
        # 如果影评为空,使用zip方法将其每一部电影名和影评组合一起会失败,所以需要判断
        # 遍历的是每一页中的其中一部电影,所以对应的影评只有一个值,所以为空状态即为[]
        if yp == []:
            # 将其为空列表添加数据,防止zip匹配不上
            yp.append('无')
        # 通过zip方法会将其中的参数拼组成一个可迭代对象,使用for循环遍历
        for item_ in zip(title,yp):
            #添加到表格中为表体
            csv_data.append(item_)
            #验证每一次影评是否成功获取,或是赋值
            print(item_[1],'保存成功')
        #休眠,防爬
        time.sleep(1)
#固定格式写入csv中
with open('NewDoBan250','w',encoding='utf-8-sig',newline='') as f:
    writer = csv.writer(f)
    writer.writerows(csv_data)
相关推荐
聪明蛋子哟5 小时前
Stagehand v3多语言SDK:Python/Go/Rust/Java下的浏览器自动化统一方案
python·golang·rust
今天AI了吗5 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
卷无止境5 小时前
Windows 上丝滑开发 Python,并稳定构建 Docker 镜像
后端·python·docker
TELL5216 小时前
selenium webdriver 第二次初始化的异常
开发语言·python
Csvn6 小时前
🐍 Day 4: Python 控制流 — 条件、循环与推导式的艺术
后端·python
大鹏说大话8 小时前
从爬虫到决策引擎:大数据下自媒体如何用Python挖掘用户痛点
开发语言·爬虫·python
Niuguangshuo8 小时前
silero-vad:超轻量级开源 VAD 实践指南
开发语言·python
2501_944676169 小时前
揭秘!WORDTIP公司靠不靠谱?小白必看
大数据·人工智能·python
Minner-Scrapy10 小时前
Scrapy 2.17 源码解析:Scheduler 调度器与磁盘/内存双队列
java·爬虫·python·scrapy·网络爬虫·twisted
CODER030410 小时前
Anaconda和Mamba创建环境管理包常用命令合集
python·深度学习·conda·虚拟环境·mamba·常用命令大全