大家好,我有一個網頁我正在嘗試抓取,該頁面有大量的跨度類,其中大部分是無用的資訊我發布了我需要的跨度類資料的一部分,但我無法找到.all跨度,因為有 100 的其他人不需要。
<div class="col-md-4">
<p>
<span class="text-muted">File Number</span><br>
A-21-897274
</p>
</div>
<div class="col-md-4">
<p>
<span class="text-muted">Location</span><br>
Ohio
</p>
</div>
<div class="col-md-4">
<p>
<span class="text-muted">Date</span><br>
07/01/2022
</p>
</div>
</div>
我需要跨度標題:
檔案號、位置、日期
然后是匹配的值:
“A-21-897274”、“Ohio”、“07/01/2022”
我需要將其列印出來,以便制作熊貓資料框。但我似乎無法用它們的值列印特定的跨度。
我試過的:
import bs4
from bs4 import BeautifulSoup
soup = BeautifulSoup(..., 'lxml')
for title_tag in soup.find_all('span', class_='text-muted'):
# get the last sibling
*_, value_tag = title_tag.next_siblings
title = title_tag.text.strip()
if isinstance(value_tag, bs4.element.Tag):
value = value_tag.text.strip()
else: # it's a navigable string element
value = value_tag.strip()
print(title, value)
輸出:
File Number "A-21-897274"
Location "Ohio"
Operations_Manager "Joanna"
Date "07/01/2022"
Type "Transfer"
Status "Open"
ETC "ETC"
ETC "ETC"
這將列印出我需要的所有內容,但它還會列印出 100 個我不想要/不需要的其他值。
uj5u.com熱心網友回復:
您可以使用函式 insoup.find_all僅選擇想要.find_next_sibling()的元素,然后選擇值。例如:
from bs4 import BeautifulSoup
html_doc = """
<div >
<p>
<span >File Number</span><br>
A-21-897274
</p>
</div>
<div >
<p>
<span >Location</span><br>
Ohio
</p>
</div>
<div >
<p>
<span >Date</span><br>
07/01/2022
</p>
</div>
</div>
"""
soup = BeautifulSoup(html_doc, "html.parser")
def correct_tag(tag):
return tag.name == "span" and tag.get_text(strip=True) in {
"File Number",
"Location",
"Date",
}
for t in soup.find_all(correct_tag):
print(f"{t.text}: {t.find_next_sibling(text=True).strip()}")
印刷:
File Number: A-21-897274
Location: Ohio
Date: 07/01/2022
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/442699.html
上一篇:將沒有表格的刮取資料保存到熊貓中
下一篇:從IMDB獲取劇集評論
