使用 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
从给定的 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