任何人都可以幫助我使用beautifulsoup將風味和品牌詳細資訊作為關鍵價值對。我是新手:
期望的輸出是
風味 - 青蘋果
品牌 - Carabau
html 看起來像這樣:Html 代碼 -
<tr class="a-spacing-small">
<td class="a-span3">
<span class="a-size-base a-text-bold">Flavour</span>
</td>
<td class="a-span9">
<span class="a-size-base">Green Apple</span>
</td>
<tr class="a-spacing-small">
<td class="a-span3">
<span class="a-size-base a-text-bold">Brand</span>
</td>
<td class="a-span9">
<span class="a-size-base">Carabau</span>
</td>
uj5u.com熱心網友回復:
我取資料,html并且可以使用find在各自的標記方法來得到準確的資料,你也可以使用find_next()或者
html="""<tr class="a-spacing-small">
<td class="a-span3">
<span class="a-size-base a-text-bold">Flavour</span>
</td>
<td class="a-span9">
<span class="a-size-base">Green Apple</span>
</td>
</tr>"""
代碼:
from bs4 import BeautifulSoup
soup=BeautifulSoup(html,"html.parser")
dict={}
data=soup.find("td",class_="a-span3").find_next().text
data1=soup.find("td",class_="a-span9").find("span",class_="a-size-base").text
print(data " - " data1)
dict[data]=data1
輸出:
Flavour - Green Apple
uj5u.com熱心網友回復:
你可以這樣做。
選擇<tr>并使用.stripped_strings以獲取 中的字串串列<tr>。
注意:如果您有多個,<tr>則使用.find_all()選擇其中的每一個并執行相同的操作。
from bs4 import BeautifulSoup
s = """
<tr >
<td >
<span >Flavour</span>
</td>
<td >
<span >Green Apple</span>
</td>
</tr>
"""
soup = BeautifulSoup(s, 'lxml')
tr = soup.find('tr')
print(list(tr.stripped_strings))
['Flavour', 'Green Apple']
uj5u.com熱心網友回復:
.stripped_strings正如Ram所提到的,實際上沒有必要,因為您可以直接呼叫特定的CSS選擇器,這會更安全,因為它將從特定元素而不是其他元素中獲取資料,并且這不會按照您的需要創建字典鍵值對.
你正在尋找這個:
# ...
data = []
for result in soup.select('tr'):
# CSS selector for flavour detail
flavor_name = result.select_one('.a-span9 .a-size-base').text
# appends to list() as a dict() -> key-value pair
data.append({
"flavour": flavor_name
})
print(data)
# # [{'flavour': 'Green Apple'}]
在線IDE中的代碼和示例(將回傳鍵值對):
from bs4 import BeautifulSoup
html = '''
<tr >
<td >
<span >Flavour</span>
</td>
<td >
<span >Green Apple</span>
</td>
'''
soup = BeautifulSoup(html, 'html.parser')
# temp list()
data = []
for result in soup.select('tr'):
# flavor = soup.select_one('.a-text-bold').text # returns just Flavour word
flavor_name = result.select_one('.a-span9 .a-size-base').text
data.append({
"flavour": flavor_name
})
print(data)
# [{'flavour': 'Green Apple'}]
訪問創建的資料:
for flavour in data:
print(flavour["flavour"])
# Green Apple
PS 我有一個專門的網路抓取博客。如果您需要決議搜索引擎,請嘗試使用SerpApi。
免責宣告,我為 SerpApi 作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/359514.html
下一篇:如何結合兩個媒體查詢?
