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

news2024/9/20 15:36:52

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

 

1、获取url

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

 2、观察页面源代码

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

3、快速获取Xpath的方法

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

 4、完整代码和结果

# 获取页面源代码
# 提取和解析数据
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()

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2064215.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于x86 平台opencv的图像采集和seetaface6的人脸特征点功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.2 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的人脸特征点功能,opencv通过摄像头采集视频图像,将采集的视频图像送给seetaface6的人脸特征点模块从而…

gif图片怎么压缩大小?深度测评7款动图压缩工具(内含教程)

gif图片在社交媒体和网络上非常流行,深受大家喜爱,因为它可以呈现生动的动画效果。gif动图之所以受到欢迎,主要因为其出色的压缩算法,能有效存储多个帧,从而实现流畅的动画。 然而,大多数社交媒体平台对gi…

《机器学习》决策树 C4.5算法、cart算法

一、什么是C4.5算法 1、概念 C4.5算法是一种决策树生成算法,它使用信息增益比(gain ratio)来选择最优分裂属性,它是ID3算法的改进版本。 C4.5算法的核心思想是选择信息增益比最大的特征作为节点进行划分,以获得最好的…

12.3.案例分析专题-面向对象设计

文章目录 面向对象分析与设计关系类图用例图包含 练习题2021年上真题2021年下真题 考点:用例图和类图 面向对象分析与设计 关系 依赖:一个事物的语义依赖于另一个事物的语义的变化而变化 关联:是一种结构关系,描述了一组链&#…

嵌入式C语言中函数宏基本操作方法

大家好,今天给大家分享一下,如何使用C语言中的函数宏,配置方法。 1 函数宏介绍 函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的功能的语句封装,且不想通过函数方式封装来降低额外的弹栈压栈开销。 函数宏本质上为宏,可以直接进行定义,例如: #define IN…

【后续更新】python搜集上海二手房数据

源码如下: import asyncio import aiohttp from lxml import etree import logging import datetime import openpyxlwb openpyxl.Workbook() sheet wb.active sheet.append([房源, 房子信息, 所在区域, 单价, 关注人数和发布时间, 标签]) logging.basicConfig(l…

华为账号“一键登录”能力让美团用户尽享安全便捷的登录体验

背景 随着全场景智能生态的日益完善,用户面临着众多应用与服务的登录需求, 而繁琐的注册登录流程通常是用户转化的隐形障碍,用户可能因为步骤繁琐、记忆密码困难而中途放弃,导致应用错失潜在用户。其次,高门槛的登录方…

Springcloud从零开始--Eureka(一)

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有…

Java数组06:冒泡排序

本节内容视频链接:Java数组08:冒泡排序_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p58&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 冒泡排序是一种简单的排序算法,‌它重复地遍历要排序的数列,‌…

day37动态规划+三.Github链接本地仓库

一.动态规划 474.一和零 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。 思路:这道题更像是另一种的0-…

Linux编辑器gcc/g++使用及Vim的配置

🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 🌈C专栏:C 文章目录 1.简单的vim配置1.1 配置文件的位置1.2 常用配…

20 Tkinter Spinbox 组件

Tkinter Spinbox 组件使用指南 Tkinter 的 Spinbox 组件是一个带有上下箭头的输入框,允许用户通过点击箭头来增加或减少数值,或者从下拉列表中选择一个值。它通常用于需要限制用户输入范围的场景。以下是对 Spinbox 组件的详细说明和一个使用案例。 Sp…

linux文件——用户缓冲区——概念深度探索、IO模拟实现

前言:本篇文章主要讲解文件缓冲区。 讲解的方式是通过抛出问题, 然后通过分析问题, 将缓冲区的概念与原理一步一步地讲解。同时, 本节内容在最后一部分还会带友友们模拟实现一下c语言的printf, fprintf接口&#xff0c…

前端面试题 webpack的工作流程

一、流程图 二、重要概念 1.entry入口: Webpack 从配置的入口点开始,分析应用程序的依赖关系 2.output出口: 定义了打包后的文件如何输出,包括文件名和输出路径。 3.loader加载器: Webpack 本身只能处理 JavaScr…

2024 Python3.10 系统入门+进阶(六):random模块常用方法以及元组常用操作详解

目录 一、random模块1.1 random模块快用导航1.2 choice()方法---从非空序列中返回一个随机元素1.3 choices()方法---返回序列的随机元素1.4 randint()方法---获取指定范围的随机整数1.5 random()方法---获取0.0~1.0范围内随机浮点数1.6 randrange()方法---获取指定范围的随机整…

ArcGIS Pro基础:如何将数据和引用地图样式一起打包分享

如上所示,有2个矢量图斑,一个是耕地地块,另一个是范围图斑,如果我们需要把此工程的所有数据以及引用地图一起分享给别人,就可以使用【打包工程】这个工具。 如上所示,在【地理处理】下输入【打包工程】&am…

Excel的使用总结1

目录 1、汇总公式:TEXTJOIN 2、excel中选择某个区域的方法 3、excel中如何在复制的时候,不将公式一起复制过去 4、想要自动填充某个区域的值的方法 1、汇总公式:TEXTJOIN TEXTJOIN 函数 - Microsoft 支持 例:TEXTJOIN("…

Java数组07:稀疏数组

本节内容视频链接: https://www.bilibili.com/video/BV12J41137hu?p59&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5https://www.bilibili.com/video/BV12J41137hu?p59&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 稀疏数组(‌sparse …

[SWPUCTF 2023 秋季新生赛]UnS3rialize

[SWPUCTF 2023 秋季新生赛]UnS3rialize 点开之后得到一串php代码&#xff1a; <?php highlight_file(__FILE__); error_reporting(0); class NSS {public $cmd;function __invoke(){echo "Congratulations!!!You have learned to construct a POP chain<br/>&q…

CDGA|数据治理为企业赋能价值的几种形式

在当今这个数据驱动的时代&#xff0c;数据已成为企业最宝贵的资产之一&#xff0c;而数据治理作为确保数据质量、安全性、合规性和可访问性的关键过程&#xff0c;正逐步成为企业转型升级、提升竞争力的核心驱动力。数据治理不仅关乎技术层面的优化&#xff0c;更是企业战略实…