我試圖用 html 串列和無序串列對頁面進行網頁抓取
(嵌套在串列和無序串列中)
但我無法在沒有屬性的情況下對它們進行網路抓取。

<ul>一天下的每個標簽都包含當天的資料。我知道如何抓取嵌套<ul>和<li>
標簽,但由于缺乏屬性而無法這樣做。我想知道我是否可以獲取已決議的頁面并在包含日期的行下查找標簽,以便我可以一次刮掉它們。任何幫助將不勝感激。
uj5u.com熱心網友回復:
注意: 由于缺乏細節,答案只能指出如何在背景關系中抓取資訊的方向——但它沒有考慮到網站的路徑,也沒有考慮到資料的準確準備。
方法是找到它的所有<h2>下一個<li>及其所有孩子<li>:
for day in soup.find_all('h2'):
for item in day.find_next('li').find_all('li'):
print(item.text)
例子
html = '''
<h2>monday</h2>
<ul><li><ul>
<li>some monday content</li>
<li>some monday content1</li>
<li>some monday content2</li>
</ul></li></ul>
<h2>tuesday</h2>
<ul><li><ul>
<li>some tuesday content</li>
</ul></li></ul>
<h2>sunday</h2>
<ul><li><ul>
<li>some sunday content</li>
<li>some sunday content1</li>
</ul></li></ul>
'''
soup=BeautifulSoup(html,'lxml')
data = []
for day in soup.find_all('h2'):
d = {'day':day.text,'items':[]}
for item in day.find_next('li').find_all('li'):
d['items'].append({'item':item.text})
data.append(d)
data
輸出
[{'day': 'monday',
'items': [{'item': 'some monday content'},
{'item': 'some monday content1'},
{'item': 'some monday content2'}]},
{'day': 'tuesday', 'items': [{'item': 'some tuesday content'}]},
{'day': 'sunday',
'items': [{'item': 'some sunday content'},
{'item': 'some sunday content1'}]}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/418826.html
標籤:
