BeautifulSoup4通过lxml使用Xpath,以及获取(定位)元素和其文本或者属性

环境:win10,python3.8.10

首先需要安装:beautifulsoup4,lxml

使用命令:

pip38 install beautifulsoup4
pip38 install lxml

安装完毕后查看一下: 

写代码:

from bs4 import BeautifulSoup 
from lxml import etree 
import requests 


URL = "https://www.xxx.com"

HEADERS = ({'User-Agent': 
			'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 \ 
			(KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36',\ 
			'Accept-Language': 'en-US, en;q=0.5'}) 

webpage = requests.get(URL, headers=HEADERS) 
soup = BeautifulSoup(webpage.content, "html.parser") 
dom = etree.HTML(str(soup)) 
print(dom.xpath('//*[@id="firstHeading"]')[0].text) 

这里针对xpath获取(定位)元素的方法,还有几点注意事项: 

(1)一个属性(如property)中包含[即这个属性值是a b c d这样的样式]某个字符串(如og:description)的写法

dom.xpath("//meta[contains(@property,'og:description')]")

(2) 上述代码的结果是一个列表,使用时一般要转成单个(加[0]或者用循环)

(3)获取其标签内的文本用元素.text,获取其某个属性用元素.get('属性')

(4)最后注意一点,浏览器网页F12出来的数据,和selenium、requests出来的数据,有时候是不一样的,要根据你使用的获取响应的实际数据来定位元素。 

上述内容参考:

(1)How to use Xpath with BeautifulSoup ? - GeeksforGeeks

(2)汇总selenium利用xpath等找网页节点的方法_webdriver xpath 查询指定节点下的子节点-CSDN博客

(3)汇总selenium利用xpath等找网页节点的方法(二)-CSDN博客

(4) xpath定位不包含某种属性的元素_xpath 不包含属性-CSDN博客

(5)用selenium和xpath定位元素并获取属性值以及str字符型转json型_python selenium xpath设置元素属性值-CSDN博客

(6)js通过xpath定位元素并且操作元素以下拉框select为例_js xpath-CSDN博客 

(7)bs4(beautifulsoup4)获取div部分文本内容(标签下的文本及子标签文本问题)_beautiful解析一部分div-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

el-transfer和el-tree进行结合搞一个树形穿梭框

由于业务需求需要在穿梭框里使用树形结构,但是本身element里并不支持,于是参考了别的大佬发的文章作为思路及后续自己新增了一些处理功能。 目录 1.拷贝代码放到自己的项目目录中 2.改造el-transfer的源码 3.修改tree-transfer-panel.vue文件 4.修改…

Excel透视表:快速计算数据分析指标的利器

文章目录 概述1.数据透视表基本操作1.1准备数据:1.2创建透视表:1.3设置透视表字段:1.4多级分类汇总和交叉汇总的差别1.5计算汇总数据:1.6透视表美化:1.7筛选和排序:1.8更新透视表: 2.数据透视-数…

Could not create connection to database server的错误原因

1、使用MyBatis 连接数据库报错 org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. ### The error may …

Docker(四)容器相关操作及问题处理

目录 一、进入、退出容器操作 二、查看Docker 容器的配置文件 方法一:进入docker容器内进行查看 方法二:通过数据卷挂载方式查看配置文件 方法三:使用Docker可视化工具查看配置文件 三、容器与宿主机时间同步 方法一:创建启…

java抽象类,接口,枚举练习题

第一题: 答案: class Animal{//成员变量protected String name;protected int weight;//构造方法public Animal(){this.name"refer";this.weight50;}public Animal(String name,int weight){this.namename;this.weightweight;}//成员方法publ…

R可视化:可发表的Y轴截断图

Y轴截断图by ggprism Y轴截断图by ggprism 介绍 ggplot2绘制Y轴截断图by ggprism加载R包 knitr::opts_chunk$set(message = FALSE, warning = FALSE)library(tidyverse) library(ggprism) library(patchwork)rm(list = ls()) options(stringsAsFactors = F) options(future.…

回溯大法总结

前言 本篇博客将分两步来进行,首先谈谈我对回溯法的理解,然后通过若干道题来进行讲解,最后总结 对回溯法的理解 回溯法可以看做蛮力法的升级版,它在解决问题时的每一步都尝试所有可能的选项,最终找出所以可行的方案…

redis中String,Hash类型用法与场景使用

String 用法 1. 设置键值对 (1)设置键值对使用 set 命令设置 key 的值。 返回值:ok,如果 key 已经存在,set 命令会覆盖旧值。 (2)使用 setex 命令设置 key 的值并为其设置过期时间&#xff…

短剧APP开发,短剧行业发展下的财富密码

今年以来,短剧市场展现出了繁荣发展的态势,成为了一个风口赛道。 短剧具有不拖沓、时长短、剧情紧凑等优势,顺应了当代人的生活,是当代人的“电子榨菜”。 短剧的快速发展同时也带动了新业态新模式的发展,短剧APP就是…

鸿蒙OS开发:【一次开发,多端部署】(一多天气)项目

一多天气 介绍 本示例展示一个天气应用界面,包括首页、城市管理、添加城市、更新时间弹窗,体现一次开发,多端部署的能力。 1.本示例参考一次开发,多端部署的指导,主要使用响应式布局的栅格断点系统实现在不同尺寸窗…

“等保测评与安全运维的协同:保障企业网络安宁

"等保测评与安全运维的协同:保障企业网络安宁"是一个涉及信息安全领域的重要话题。这里,我们可以从几个方面来探讨这个主题。 1. 等保测评(等级保护测评) 等保测评,即信息安全等级保护测评,是依…

WordPress 发布了独立的 SQLite 插件

之前 WordPress 在官方的 Performance Lab 插件实现 SQLite 模块,现在重构 SQLite 的实现,并且将其发布成一个独立的插件:SQLite Database Integration。 独立 SQLite 插件 最初的功能模块实现是基于 aaemnnosttv 的 wp-sqlite-db 插件修改实…

SEO优化,小白程序员如何做SEO优化流量从0到1

原文链接:SEO优化,小白程序员如何做SEO优化流量从0到1 1、SEO是什么? SEO即:搜索引擎优化(Search Engine Optimization),是一种通过优化网站结构、内容和外部链接等因素,提高网站在搜索引擎中的自然排名&…

某神,云手机启动?

某神自从上线之后,热度不减,以其丰富的内容和独特的魅力吸引着众多玩家; 但是随着剧情无法跳过,长草期过长等原因,近年脱坑的玩家多之又多,之前米家推出了一款云某神的app,目标是为了减少用户手…

Unity 自定义Web GL 发布模板

前言 使用讯飞语音识别时,发布Web GL 平台后需要在index.html 中添加相应的script 标签,但每次发布完添加比较麻烦,添加一个发布模板就可以不必每次发布完再手动添加修改。 实现 在Assets 文件夹下新建一个文件夹,重命名为WebG…

SpringCloud系列(22)--Ribbon默认负载轮询算法原理及源码解析

前言:在上一篇文章中我们介绍了如何去切换Ribbon的负载均衡模式,而本章节内容则是介绍Ribbon默认负载轮询算法的原理。 1、负载轮询算法公式 rest接口第N次请求数 % 服务器集群总数 实际调用服务器下标(每次服务器重启后rest接口计数从1开始…

分享:大数据风险检测报告,哪里查询比较好?

随着大数据技术的发展,逐渐被运用到各个领域,基于大数据技术的个人风险检测也就是我们常说的大数据报告在金融环境中运用的十分普遍,那大数据风险检测报告哪里查询比较好呢?本文就为大家简单介绍一下。 大数据风险检测报告查询能查到什么? …

超大Sql文件切分工具SQLDumpSplitter —— 筑梦之路

官网:PLB PLB - SQLSplitter 用于将大型MySQL转储拆分为可独立执行的小型SQL文件。 显示100%时并不是已经处理完了,而是才开始 优点 软件程序小巧,不需要安装,直接点击运行就可以最厉害的是SQLDumpSplitter可以自动将结构语句&…

基于放射组学的深度学习用于左心房CT图像中房颤亚型的分类

文章目录 Radiomics-Informed Deep Learning for Classification of Atrial Fibrillation Sub-Types from Left-Atrium CT Volumes摘要方法实验结果 Radiomics-Informed Deep Learning for Classification of Atrial Fibrillation Sub-Types from Left-Atrium CT Volumes 摘要…

多微信如何高效管理?一台电脑就能搞定!

对于有多个微信号的人来说,管理这些微信无疑是一道难题。 今天,就给大家分享一个能够让你高效管理多个微信号的神器——个微管理系统,下面,就一起来看看它都有哪些功能吧! 1、多号同时登录在线 系统支持多个微信号同…