2016-04-19 15 views
2

Ich bin sehr neu im Web-Scraping mit Python und es fällt mir wirklich schwer, verschachtelten Text innerhalb von HTML() zu extrahieren, um genau zu sein). Hier ist, was ich habe, so weit:Extrahiere den Text von `p` innerhalb von` div` mit BeautifulSoup

from bs4 import BeautifulSoup 
import urllib 

url = urllib.urlopen('http://meinparlament.diepresse.com/') 
content = url.read() 
soup = BeautifulSoup(content, 'lxml') 

Dies funktioniert:

links=soup.findAll('a',{'title':'zur Antwort'}) 
for link in links: 
    print(link['href']) 

Diese Extraktion funktioniert:

table = soup.findAll('div',attrs={"class":"content-question"}) 
for x in table: 
    print(x) 

Dies ist die Ausgabe:

<div class="content-question"> 
<p>[...] Die Verhandlungen über die mögliche Visabefreiung für  
türkische Staatsbürger per Ende Ju... 
<a href="http://meinparlament.diepresse.com/frage/10144/" title="zur 
Antwort">mehr »</a> 
</p> 
</div> 

Jetzt möchte ich den Text innerhalb vonextrahierenund /p. Dies ist der Code, den ich verwenden:

table = soup.findAll('div',attrs={"class":"content-question"}) 
for x in table: 
    print(x['p']) 

jedoch Python wirft eine KeyError.

Antwort

4

Der folgende Code findet, und druckt den Text jeder p Element in den div ‚s mit der class "Content-Frage"

from bs4 import BeautifulSoup 
import urllib 

url = urllib.urlopen('http://meinparlament.diepresse.com/') 
content = url.read() 
soup = BeautifulSoup(content, 'lxml') 

table = soup.findAll('div',attrs={"class":"content-question"}) 
for x in table: 
    print x.find('p').text 

# Another way to retrieve tables: 
# table = soup.select('div[class="content-question"]') 

Das Folgende ist der gedruckte Text des ersten p Element in table:

[...] Die Verhandlungen über sterben Mögliche Visabefreiung für türkische Staatsbürger per Ende Juni Sind noch nicht abgeschlossen, sodass nicht mit Sicherheit gesagt Werden Kann, ob es zu diesem zeitpunkt BEREITS zu Einer Visabefreiu ng kommt. Auch die genialen Modalitäten einer Visaliberalisierung sind noch nicht ausverkauft. Prinzipiell ist es Jedoch so, dass Visaerleichterungen bzw. -liberalisationen eine Frage von Reziprozität sind, d.h. Es ist für alle Fälle gültig. [...]

Verwandte Themen