簡體   English   中英

xpath獲取Python中的元素列表

[英]xpath to get lists of element in Python

我正在嘗試從看起來像這樣的頁面中抓取元素列表:

<div class="container">
    <b>1</b>
    <b>2</b>
    <b>3</b>
</div>
<div class="container">
    <b>4</b>
    <b>5</b>
    <b>6</b>
</div>

我想使用xpath獲取列表或元組:[1,2,3],[4,5,6] ...

在頁面上使用for循環,我得到每個列表的第一個元素或所有數字作為一個列表。

你能幫我解決這個問題嗎? 預先感謝您的任何幫助!

對於靜態頁面的Web抓取,最好使用bs4軟件包。 並使用bs4可以輕松實現目標:

from bs4 import BeautifulSoup
source = """<div class="container">
    <b>1</b>
    <b>2</b>
    <b>3</b>
</div>
<div class="container">
    <b>4</b>
    <b>5</b>
    <b>6</b>
</div>"""
soup = BeautifulSoup(source, 'html.parser')  # parse content/ page source
soup.find_all('div', {'class': 'container'})  # find all the div element (second argument is optional mentioned to scrape/find only element with attribute value)
print([[int(x.text) for x in i.find_all('b')] for i in soup.find_all('div', {'class': 'container'})])  # get list of all div's number list as you require

輸出:

[[1, 2, 3], [4, 5, 6]]

您可以使用此xpath表達式,這將給您兩個字符串

.//*[@class='container']    ➡ '1 2 3', '4 5 6'

如果您希望使用6弦

.//*[@class='container']/b  ➡ '1','2','3','4','5','6'

盡管您必須分離xpath表達式才能獲得所需的確切信息

.//*[@class='container'][1]/b  ➡ '1','2','3'
.//*[@class='container'][2]/b  ➡ '4','5','6'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM