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