从网站链接提取

时间:2017-01-17 20:26:29

标签: python data-extraction

我正在尝试从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'))

2 个答案:

答案 0 :(得分: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循环:

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

答案 1 :(得分: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'))