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

server/2024/10/20 11:29:07/

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

 

1、获取url

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

 2、观察页面源代码

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

3、快速获取Xpath的方法

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

 4、完整代码和结果

python"># 获取页面源代码
# 提取和解析数据
import requests
from lxml import etree
import csvurl = '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()

 

 


http://www.ppmy.cn/server/107030.html

相关文章

bypass disable_function绕过

目录 disable_function简介 LD_PREELOAD(最好用的一个方法) 禁用的函数 服务器上有sendmail这个服务 服务器上没有sendmail这个服务 例子:蚁剑靶场第一关 源码地址 开始测试 ​编辑 结果 Apache Mod CGI 禁用的函数 利用条件 使用 php-fpm 环境搭建 …

Shopify/shopline等独立站paypal快速提现到国内银行卡

做shopify/shopline/shopyy/shoplazza独立站用得最多的收款方式为paypal。 下面介绍如何把paypal里面的资金提现到我们国内银行卡,收款工具是GeeWallet。 1、注册GeeWallet注册入口 2、打开链接,填入手机号或者邮箱,点击立即注册 3、在注册…

FineBI修改地图配置

前言 在使用FineBI绘制地图时,有时候我们可能发现FineBI中的默认地图模型不是最新的,导致某些地区的区域地图与现实不一致,比如说FineBI的默认地图中深圳地图没有大鹏新区,并且将现在大鹏新区的地方标记为了龙华区,为…

C++:类和对象(二)

欢迎来到HarperLee的学习笔记! 博主主页传送门:HarperLee的博客主页 个人语录:他强任他强,清风拂山岗! 一、类的默认成员函数 如果一个类里面什么的成员都没有,我门将其简称为空类。但是空类里面真的什么都…

分布式百万商户架构之缓存技术 本地化及未来之窗行业应用跨平台架构

如果数据读取速度比文件读取慢,将数据缓存到文件有以下优点: 一、提高读取效率 当需要反复访问某些数据时,从缓存文件中读取可以大大减少读取时间。因为文件系统通常会对文件进行一定程度的优化,使得文件的读取更加高效。而相比之…

Florr.io 第一章 策略/流派分析

目录 1前言2作者3正文 3.1召唤流3.2叶流3.3翅膀流3.4反伤流3.5骨轮流 前言 本文将分析现在常用的流派,研究它们的优缺点和经典构筑,以及一些建议。经验来自个人,评判可能会有不实的地方,欢迎指出。第三只眼和罗勒推出后&#x…

机械学习—零基础学习日志(如何理解概率论10)

数理统计 这里X为总体。x1,x2,x3为样本。具体的取值为样本值。 抽样分布 来一道习题: 回答: 上一道题解析: 《概率论与数理统计期末不挂科|考研零基础入门4小时完整版(王志超)》学习笔记 王志超老师 (UP…

设计模式(一):七大原则

*设计模式的目的* 编写软件过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好 1) 代码重用性 (即:相同功能的代码,不用多次编写) 2) 可读性 (即:编程规范性, 便于其他程序员的阅读和理…