打卡学习Python爬虫第五天|使用Xpath爬取豆瓣电影评分

**思路:**使用Xpath爬取豆瓣即将上映的电影评分,首先获取要爬取页面的url,查看页面源代码是否有我们想要的数据,如果有,直接获取HTML文件后解析HTML内容就能提取出我们想要的数据。如果没有则需要用到浏览器抓包工具,二次才能爬取到。其次观察HTML代码的标签结构,通过层级关系找到含有我们想要的数据的标签,提取出数据。最后保存我们的数据。

1、获取url

这里我们可以看到,有的电影是暂时没有评分的,等一下爬出的数据要做处理。

2、观察页面源代码

数据存放在同一级的多个li标签中,我们只需要利用相对查找,循环遍历就能找到所有的libi'a

3、快速获取Xpath的方法

找到想要的标签-->右键-->复制-->复制完整的Xpath

4、完整代码和结果

python 复制代码
# 获取页面源代码
# 提取和解析数据
import requests
from lxml import etree
import csv

url = 'https://movie.douban.com/'
# headers每个人的不一样,要去看响应头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
response = requests.get(url,headers=headers)
# print(response.text)
html = etree.HTML(response.text)
movie_list = html.xpath('/html/body/div[3]/div[1]/div/div[2]/div[1]/div[2]/ul/li')
# 初始化一个列表来存储电影数据字典
movies_dict = []

# 提取数据
for movie in movie_list:
    title_elements = movie.xpath('./@data-title')  # ./相对路径
    if title_elements:  # 确保列表不为空
        name = title_elements[0]
    else:
        name = "暂无标题"

    score_elements = movie.xpath('./ul/li[3]/span[2]/text()')
    if score_elements:  # 确保列表不为空
        score = score_elements[0]
    else:
        score = "暂无评分"
    # print(name, score)
    movie_dict = {
        'name':name,
        'score':score
    }
    movies_dict.append(movie_dict)
f = open('movies.csv','w',encoding='utf-8',newline='')
writer = csv.DictWriter(f,fieldnames=['name','score'])
writer.writeheader()
for movie in movies_dict:
    writer.writerow(movie)
    f.flush()
print("结束!")
response.close()
相关推荐
chao_78915 分钟前
二分查找篇——寻找旋转排序数组中的最小值【LeetCode】
python·线性代数·算法·leetcode·矩阵
啊我不会诶28 分钟前
倍增法和ST算法 个人学习笔记&代码
笔记·学习·算法
金玉满堂@bj32 分钟前
PyCharm 中 Python 解释器的添加选项及作用
ide·python·pycharm
程序员三藏36 分钟前
如何使用Pytest进行测试?
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
aha-凯心1 小时前
前端学习 vben 之 axios interceptors
前端·学习
随心点儿1 小时前
使用python 将多个docx文件合并为一个word
开发语言·python·多个word合并为一个
不学无术の码农1 小时前
《Effective Python》第十三章 测试与调试——使用 Mock 测试具有复杂依赖的代码
开发语言·python
sleepybear11131 小时前
在Ubuntu上从零开始编译并运行Home Assistant源码并集成HACS与小米开源的Ha Xiaomi Home
python·智能家居·小米·home assistant·米家·ha xiaomi home
纪伊路上盛名在1 小时前
(鱼书)深度学习入门1:python入门
人工智能·python·深度学习
夏末蝉未鸣012 小时前
python transformers笔记(TrainingArguments类)
python·自然语言处理·transformer