2016-12-26 60 views
0

我一直在開發一個使用python 3.6的web爬蟲,並且在這段代碼中遇到了麻煩。我需要分別從每個「dd」收集文本數據。我可以通過使用「class_ = first」代碼來首先告訴「dd」。但我對如何分開收集沒有「class」的第二個「dd」和第三個「dd」感到困惑。我如何分別抓取此代碼?

此外,我想分別從第二個「dd」(例如2012 | 4月)收集文本數據。

請給我一些建議。

謝謝。

(代碼)

<dd class="first"> 
    <span class="t">Plate Number</span> 
    <span class="s">43-3180</span> 
</dd> 
<dd> 
    <span class="t">Year</span> 
    <span class="s"><em class="red">2012&nbsp;Apr.</em></span> 
</dd> 
<dd> 
    <span class="t">Mileage</span> 
    <span class="s"><em class="red">60,000 km</em></span> 
</dd> 

回答

0

你應該使用BeautifulSoup

from bs4 import BeautifulSoup 

html = '''<dd class="first"> 
    <span class="t">Plate Number</span> 
    <span class="s">43-3180</span> 
</dd> 
<dd> 
    <span class="t">Year</span> 
    <span class="s"><em class="red">2012&nbsp;Apr.</em></span> 
</dd> 
<dd> 
    <span class="t">Mileage</span> 
    <span class="s"><em class="red">60,000 km</em></span> 
</dd> 
''' 

soup = BeautifulSoup(html, 'html.parser') 

dds = soup.find_all('dd') 

for dd in dds: 
    span_t = dd.find_all('span', {'class': 't'})[0] 
    span_s = dd.find_all('span', {'class': 's'})[0] 
    print(span_t.text) 
    print(span_s.text) 

    >> Plate Number 
     43-3180 
     Year 
     2012 Apr. 
     Mileage 
     60,000 km