1

我正在尝试从以下网站解析特定的 href 链接:https ://www.murray-intl.co.uk/en/literature-library 。

我试图解析的元素:

<a class="btn btn--naked btn--icon-left btn--block focus-within" href="https://www.aberdeenstandard.com/docs?editionId=9123afa2-5318-4715-9783-e07d08e2e7cc&amp;_ga=2.12911351.1364356977.1629796255-1577053129.1629192717" target="blank">Portfolio Holding Summary<i class="material-icons btn__icon">library_books</i></a>

但是,使用 BeautifulSoup 我无法获得所需的元素,可能是由于接受了 cookie。

from bs4 import BeautifulSoup
import urllib.request
import requests as rq

page = requests.get('https://www.murray-intl.co.uk/en/literature-library')
soup = BeautifulSoup(page.content, 'html.parser')
link = soup.find_all('a', class_='btn btn--naked btn--icon-left btn--block focus-within')
url = link[0].get('href')
url

我还是 BS4 的新手,希望有人能在正确的道路上帮助我。

先感谢您!

4

1 回答 1

1

要获得正确"focus-within"的标签,请删除类(稍后由 JavaScript 添加):

import requests
from bs4 import BeautifulSoup

url = "https://www.murray-intl.co.uk/en/literature-library"
soup = BeautifulSoup(requests.get(url).content, "html.parser")

links = soup.find_all("a", class_="btn btn--naked btn--icon-left btn--block")
for u in links:
    print(u.get_text(strip=True), u.get("href", ""))

印刷:

...

Portfolio Holding Summarylibrary_books https://www.aberdeenstandard.com/docs?editionId=9123afa2-5318-4715-9783-e07d08e2e7cc

...

编辑:要仅获取指定的链接,您可以使用例如 CSS 选择器:

link = soup.select_one('a:-soup-contains("Portfolio Holding Summary")')
print(link["href"])

印刷:

https://www.aberdeenstandard.com/docs?editionId=9123afa2-5318-4715-9783-e07d08e2e7cc
于 2021-08-24T10:06:23.333 回答