【问题标题】:Python - How to pull back a Specific Link from a websitePython - 如何从网站拉回特定链接
【发布时间】:2021-08-02 20:08:44
【问题描述】:

Python 菜鸟传入,

我正在尝试从网站上抓取特定链接,尽管我要撤回多个并且我不知道如何进一步定义代码以仅撤回我想要的那个。 我相信问题是由于它们在 HTML 中是重复的“目标”


以下是 HTML 示例:

<ul><li><a href="Link1.pdf">Weekly Metrics</a></li>
<li><a rel="noreferrer noopener" href="Link2.xlsx" target="_blank">Monthly Website Statistics</a></li>
<li><a rel="noreferrerenter code here noopener" href="Link3.pdf" target="_blank">2020 Overview</a></li></ul>

我的尝试:

import requests
import pandas as pd
from bs4 import BeautifulSoup

raw_url = 'https://url1.com/'

r = requests.get(raw_url)

soup = BeautifulSoup(r.content, 'html.parser')

monthly_url = soup.find_all('a', target="_blank")

print(monthly_url)

********* 拉回 2 个结果 *********

monthly_url = (url.get('href')) #this would give me just the URL inside the <a /a> code I want.

我只想撤回“每月网站统计”Excel 表的链接。 关于如何进一步定义这一点有什么想法吗?

提前谢谢你。

【问题讨论】:

  • 可以分享一下网址吗?

标签: python python-3.x web-scraping beautifulsoup jupyter-notebook


【解决方案1】:

您正在使用 findall 查找带有 target=_blank 的所有元素,遗憾的是它有两个。

您可以尝试使用其他属性,bs4 允许您这样做:

soup.findAll(attrs= {"href":"Link2.xlsx"})

【讨论】:

  • 谢谢!那张印刷品效果很好。现在只需要保留这些信息.. :)
【解决方案2】:
from bs4 import BeautifulSoup

html = '''<ul><li><a href="Link1.pdf">Weekly Metrics</a></li>
<li><a rel="noreferrer noopener" href="Link2.xlsx" target="_blank">Monthly Website Statistics</a></li>
<li><a rel="noreferrerenter code here noopener" href="Link3.pdf" target="_blank">2020 Overview</a></li></ul>'''


soup = BeautifulSoup(html, 'lxml')
print(soup.select_one('a:-soup-contains(Monthly)')['href'])

输出:

Link2.xlsx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    相关资源
    最近更新 更多