2016-05-14 4 views
-1

Ok, also benutze ich bs4 (BeautifulSoup), um durch eine Website zu analysieren und die spezifischen Titel zu finden, die ich suche. Mein Code sieht wie folgt aus:Wie man whitespace über Text loswird, mit bs4

import requests 
from bs4 import BeautifulSoup 
url = 'http://www.ewn.co.za/Categories/Local' 
r = requests.get(url).text 
soup = BeautifulSoup(r) 
for i in soup.find_all(class_='article-short'): 
    if i.a: 
     print(i.a.text.replace('\n', '').strip()) 
    else: 
     print(i.contents[0].strip()) 

Dieser Code funktioniert, aber es zeigt, wie 20 Zeilen Leerzeichen ersten, vor dem Drucken die gewünschten Titel von der Website in der Ausgabe. Ist etwas mit meinem Code nicht in Ordnung oder kann ich etwas tun, um den Whitespace loszuwerden?

+0

Mit der Leistenfunktion Sie Leerzeichen in einem String (https://docs.python.org/3/library/stdtypes.html#str.strip) – Querenker

Antwort

0

Weil Sie Elemente wie folgt aus:

<article class="article-short"> 
<div class="thumb"><a href="http://ewn.co.za/2016/05/14/Contralesa-against-scrapping-initiation-due-to-cold-weather"><img alt="FILE: Boys who have undergone a circumcision ceremony walk near Qunu in the Eastern Cape in 2013. Picture: AFP." height="147" src="http://ewn.co.za/cdn/-%2fmedia%2f3C37CB28056746CD95FC913757AAD41C.ashx%3fas%3d1%26h%3d147%26w%3d234%26crop%3d1;waeb9b8157b3e310df" width="234"/></a></div> 
<h6 class="h6-mega"><a href="http://ewn.co.za/2016/05/14/Contralesa-against-scrapping-initiation-due-to-cold-weather">Contralesa against scrapping initiation due to cold weather</a></h6> 
</article> 

wo das erste Glied eines Bildes und keinen Text enthält.

Sie sollten stattdessen nach h6 Tags suchen. Also, so etwas wie dies funktioniert:

import requests 
from bs4 import BeautifulSoup 
url = 'http://www.ewn.co.za/Categories/Local' 
r = requests.get(url).text 
soup = BeautifulSoup(r) 
for i in soup.find_all(class_='article-short'): 
    title = (i.h6.text.replace('\n', '') if i.h6 else contents[0]).strip() 
    if title: 
     print(title) 
+0

Dank entfernen! @aldanor es funktioniert jetzt viel besser! – raid3r