大家好,我正在嘗試從網站中提取某些文本資訊,但并非所有文本都需要,但是當文本位于多個 div 中時,我對如何執行此操作感到困惑。這是我正在查看的代碼。但是當里面有多行時我會感到困惑。我需要提取“數字”標題和文本(即 837270),以及“位置”標題和文本(俄亥俄州)
<br>
<br>
</p>
</div>
</div>
<div class="row">
<div class="col-md-4">
<p>
<span class="text-muted">Number</span>
<br>
"837270"
</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">Office</span>
<be>
"Joanna"
</p>
</div>
</div>
<div class="row">
<div class="col-md-4">
<p>
<span class="text-muted">Date</span>
<be>
"07/01/2022"
</p>
</div>
<div class="col-md-4">
<p>
<span class="text-muted">Type</span>
<br>
"Business"
</p>
</div>
<div class="col-md-4">
<p>
<span class="text-muted">Status</span>
<br>
"Open"
</p>
</div>
</div>
</div>
</div>
</div>
我已經嘗試過了,它沒有列印出來。
soup = BeautifulSoup(driver.page_source,'html.parser')
df = soup.find('div', id = "Location")
print(df.string)
我想拉它并保存它。任何幫助將不勝感激,謝謝。
uj5u.com熱心網友回復:
有時 HTML 沒有 ID 或其他易于遵循的模式。不過,您可以變得非常聰明,您不必依賴使用表格結構的 HTML 頁面。
例如,在這種情況下,似乎每個部分都由一個<span >標簽命名,其值是該跨度標簽的最后一個兄弟。
要抓取每個標題及其值,我們可以執行以下操作:
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)
輸出:
Number "837270"
Location "Ohio"
Office "Joanna"
Date "07/01/2022"
Type "Business"
Status "Open"
當然,您可以在此處識別其他模式以可靠地獲取值。這只是一個例子。
如果你只想得到Location,你可以通過它的文本找到它。
location_tag = soup.find('span', class_='text-muted', text='Location')
然后得到它的值和上面是一樣的。
*_, location_value_element = location_tag.next_siblings
print(location_value_element.strip()) # "Ohio"
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/441996.html
上一篇:在python中使用BeautifulSoup進行分頁
下一篇:使用BS4排除跨度-Python
