2016-12-26 30 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