2017-01-17 141 views
1

我想從WebMD中提取一些數據,一旦我運行我的代碼,我就會將「無」作爲回報。任何想法我做錯了什麼。我的回報數與鏈接數相同,但沒有鏈接。從網站鏈接中提取

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

'打印(url.get(「HREF」))'返回你'None' ? – Nilesh

+0

是的。不只是這一行,但整個代碼 – Data1234

回答

0

url元素實際上是一個div標籤,而不是一個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> 

你需要得到href屬性之前,選擇孩子:

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

只是修改了循環如下:

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

解決了問題謝謝! – Data1234

0

soup.find_all('div',class_="link")返回所有div元素與類link。這些元素包裹包含在href屬性a元素,所以你需要從正確的元素得到href的:

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

非常感謝你! – Data1234