2017-01-17 5 views
1

Ich versuche, einige Daten aus WebMD zu extrahieren, und sobald ich meinen Code ausführen, bekomme ich eine "None" als Rückgabe. Irgendeine Idee, was ich falsch mache. Ich habe die Anzahl der Rückgaben die gleiche wie die Anzahl der Links, aber ich bekomme die Links nicht.Link-Extraktion von der Website

import bs4 as bs 
import urllib.request 
import pandas as pd 


source = urllib.request.urlopen('https://messageboards.webmd.com/').read() 

soup = bs.BeautifulSoup(source,'lxml') 

for url in soup.find_all('div',class_="link"): 
    print (url.get('href')) 
+0

'print (url.get ('href'))' kehren Sie 'None' ? – Nilesh

+0

ja. nicht nur diese Linie, sondern der ganze Code – Data1234

Antwort

0

Ihr url Element ist eigentlich ein div Tag, kein a:

>>> x = soup.find_all('div', class_="link") 
>>> x[0] 
<div class="link"><a href="https://messageboards.webmd.com/family-pregnancy/f/relationships/">Relationships</a></div> 

Sie müssen das Kind wählen, bevor Sie das Attribut href bekommen:

>>> x[0].a.get('href') 
'https://messageboards.webmd.com/family-pregnancy/f/relationships/' 

einfach ändern Sie Ihre für Schleife wie folgt:

for url in soup.find_all('div',class_="link"): 
    print (url.a.get('href')) 
+0

löste das Problem, danke! – Data1234

0

soup.find_all('div',class_="link") gibt alle div Elemente mit der Klasse link zurück. Diese Elemente wickeln die a Elemente, die die href-Attribute enthalten, so müssen Sie die href aus dem richtigen Element zu erhalten, wie so:

for div in soup.find_all('div',class_="link"): 
    print (div.a.get('href')) 
+0

vielen dank !! – Data1234