【问题标题】:Extract Link URL After Specified Element with Python and Beautifulsoup4使用 Python 和 Beautifulsoup4 提取指定元素后的链接 URL
【发布时间】:2016-06-20 19:16:13
【问题描述】:

我正在尝试使用 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,我试图简单地获取链接。值得注意的是,这是我试图获取的页面上的唯一链接。

【问题讨论】:

    标签: python web-scraping beautifulsoup


    【解决方案1】:

    您正在寻找href html 属性的链接。 source_url 是一个bs4.element.Tag,它具有get 方法,例如:

    source_url.get('href')
    

    【讨论】:

      【解决方案2】:

      你几乎明白了!


      解决方案 1:

      您只需在分配给source_url 的soup 上运行.text 方法。

      所以而不是:

      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') 以仅获取与您的soup.findall 元素相关的特定href 标记。

      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

      【讨论】:

      • 完美,谢谢!另外,感谢您的替代。接近建议;我是 python 的新手,我仍然沉浸在最佳实践中。另外,感谢您的快速回复,我什至无法接受答案!
      • 别担心,伙计。你提出了一个很好的问题,并向我们展示了你的一些努力。正如我所说,你几乎明白了;-)
      猜你喜欢
      • 2021-02-14
      • 2021-11-06
      • 2020-10-04
      • 2018-12-10
      • 1970-01-01
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多