使用Python和Beautifulsoup4在指定元素后提取链接URL

时间:2016-06-20 19:16:13

标签: python web-scraping beautifulsoup

我正在尝试使用python和beautifulsoup库从页面中提取链接,但我被卡住了。链接位于以下页面的侧边栏区域,直接位于h4字幕下方“原始来源:

http://www.eurekalert.org/pub_releases/2016-06/uonc-euc062016.php

我设法隔离了链接(主要是),但我不确定如何进一步推进我的定位以实际提取链接。到目前为止,这是我的代码:

import requests
from bs4 import BeautifulSoup

url = "http://www.eurekalert.org/pub_releases/2016-06/uonc-euc062016.php"
data = requests.get(url)
soup = BeautifulSoup(data.text, 'lxml')

source_url = soup.find('section', class_='widget hidden-print').find('div', class_='widget-content').findAll('a')[-1]

print(source_url)

我目前正在获取我已经隔离的最后一个元素的完整html,我正在尝试简单地获取链接。值得注意的是,这是我想要获得的页面上的唯一链接。

2 个答案:

答案 0 :(得分:1)

您正在寻找href html属性的链接。 source_url是bs4.element.Tag,其get方法如下:

source_url.get('href')

答案 1 :(得分:0)

你几乎得到了它!

解决方案1:

您只需在已分配给soup的{​​{1}}上运行source_url方法。

所以而不是:

print(source_url)

您应该使用:

print(source_url.text)

<强>输出:

  

http://news.unchealthcare.org/news/2016/june/e-cigarette-use-can-alter-hundreds-of-genes-involved-in-airway-immune-defense

解决方案2:

您应该致电source_url.get('href')以仅获取与您的href元素相关的特定soup.findall代码。

print source_url.get('href')

<强>输出:

  

http://news.unchealthcare.org/news/2016/june/e-cigarette-use-can-alter-hundreds-of-genes-involved-in-airway-immune-defense