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