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

news/2024/9/23 9:26:12/

环境: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博客


http://www.ppmy.cn/news/1462829.html

相关文章

初识Java--开启我的Java学习之旅

目录 一、JAVA语言概述二、JAVA语言的重要性2.1语言使用广泛程度2.2工作领域2.3在校招岗位的需求2.4 java语言发展简史2.5Java语言特性 三、初识java的main方法四、运行java程序五、【面试题】JDK、JRE、JVM之间的关系? 一、JAVA语言概述 Java是一种优秀的程序设计…

Stable Diffusion【写实模型】:逼真,逼真,超级逼真的国产超写实摄影大模型万享XL

今天和大家分享的是一个国产万享系列中使用量最高的大模型:万享XL_超写实摄影,顾名思义,该大模型主要是面向写实摄影,一方面生成的图片人物皮肤纹理细节超级逼真,另一方面对于光影效果的处理也非常到位。对于万享XL超写实摄影大模…

前端 CSS 经典:元素倒影

前言&#xff1a;好看的元素倒影&#xff0c;可以通过-webkit-box-reflect 实现。但有兼容问题&#xff0c;必须是 webkit 内核的浏览器&#xff0c;不然没效果。但是好看啊。 效果图&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"&g…

Java进阶学习笔记11——多态

什么是多态&#xff1f; 多态是在继承/实现情况下一种现象&#xff0c;表现为&#xff1a;对象多态和行为多态。 同一个对象&#xff0c;在不同时刻表现出来的不同形态。 多态的前提&#xff1a; 要有继承/实现关系 要有方法的重写 要有父类引用指向子类对象。 多态的具体代码…

特殊变量笔记

执行demo4.sh文件,输入输出参数itcast itheima的2个输入参数, 观察效果 特殊变量&#xff1a;$# 语法 $#含义 获取所有输入参数的个数 案例需求 在demo4.sh中输出输入参数个数 演示 编辑demo4.sh, 输出输入参数个数 执行demo4.sh传入参数itcast, itheima, 播仔 看效果…

android 问题记录:gradle.kts文件引入本地jar包

在build.gradle文件中引入本地的jar文件&#xff0c;可以使用files方法来添加本地的jar文件到项目的依赖中。在build.gradle引入jar包我们都很熟悉了&#xff0c;具体代码如下 implementation files(libs/test.jar)// 或者 compile files(libs/test.jar) 但是这种写法目前在kt…

学习笔记——STM32F103的V3版本——3*3矩阵键盘控制数码管

一.硬件 1.数码管 2.3*3的矩阵键盘&#xff08;自己做的模块&#xff08;手残党一枚&#xff09;&#xff09; 3.总体连接 二.在Keil5中的部分软代码 test.c中&#xff1a; #include "sys.h" #include "usart.h" #include "delay.h" #include …

禁用win10自动更新

services.msc——Windows Update——常规——启动类型——禁用 services.msc——Windows Update——恢复——三个无操作&#xff0c;9999天。 gpedit.msc——计算机配置——管理模板——Windows组件——Windows更新——配置自动更新——已启用——2-通知下载和自动更新 Windows…