2016-12-26 6 views
0

Ich habe in diesem Moment einen Web-Crawler mit Python 3.6 entwickelt und habe gerade Probleme mit diesem Code. Ich muss die Textdaten von jedem "dd" getrennt sammeln. Ich kann zuerst "dd" sagen, indem ich den "class_ = first" -Code verwende. Aber ich bin verwirrt, wie man das zweite "dd" und das dritte "dd" ohne "Klasse" getrennt sammelt.Wie kann ich diesen Code separat crawlen?

Auch möchte ich die Textdaten von der zweiten "dd" getrennt sammeln (z. B. 2012 | April).

Bitte geben Sie mir einen Rat.

Danke.

(Kodex)

<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> 

Antwort

0

sollten Sie verwenden 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