我该如何单独抓取此代码?

时间:2016-12-26 07:16:20

标签: python-3.x web web-crawler

此时我一直在使用python 3.6开发一个网络爬虫,但是这个代码遇到了麻烦。我需要分别从每个“dd”收集文本数据。我可以通过使用“class_ = first”代码首先告诉“dd”。但我很困惑如何分别收集第二个“dd”和第三个“dd”没有“class”。

另外,我想分别从第二个“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>

1 个答案:

答案 0 :(得分: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