2017-01-17 142 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