使用 BeautifulSoup 从 HTML 中提取特定的 url

Extract specific urls from HTML with BeautifulSoup

从给定的 HTML 我需要提取特定的 url。例如,<a> 和属性 href 如下所示:

<a href="https://hoster.com/some_description-specific_name-more_description.html">

我只需要提取包含“hoster.com”和“specific_name”

的网址

我在 Raspberry Pi 上使用了 BeautifulSoup,但我只能提取 HTML 的所有 ULR 的基本功能:

from bs4 import BeautifulSoup

with open("page.html") as fp:
    soup = BeautifulSoup(fp, 'html.parser')
    for link in soup.find_all('a'):
        print(link.get('href'))

您可以 select 您的元素更具体 css selectors:

soup.select('a[href*="hoster.com"][href*="specific_name"]')

但如果必须匹配多个模式,我建议:

for link in soup.find_all('a'):
    if all(s in link['href'] for s in pattern):
        print(link.get('href'))
例子
html = '''
<a href="https://hoster.com/some_description-specific_name-more_description.html">
<a href="https://lobster.com/some_description-specific_name-more_description.html">
<a href="https://hipster.com/some_description-specific_name-more_description.html">
'''

soup = BeautifulSoup(html)

pattern = ['hoster.com','specific_name']

for link in soup.find_all('a'):
    if all(s in link['href'] for s in pattern):
        print(link.get('href'))
输出
https://hoster.com/some_description-specific_name-more_description.html