首页 > 解决方案 > 我正在尝试使用 python 脚本在页面中查找特定链接

问题描述

我试图弄清楚如何从给定站点中仅提取带有特定文本的链接

这是我使用的程序:

from BeautifulSoup import BeautifulSoup
import urllib2
import re

html_page = urllib2.urlopen("https://www.example.net/")
soup = BeautifulSoup(html_page)
linkContent = "Tartan Flannel Shirt "
for link in soup.findAll('a'):
    print link.get('href')


Html链接是这样的

<a class="name-link" href="/shop/all/shirts">Tartan Flannel Shirt </a>

如果我运行上面的程序,输出是网站中每个链接的列表,但我希望它只显示里面有格子法兰绒衬衫的链接。

标签: pythonbeautifulsoupurllib2

解决方案


text=您可以为 的参数提供 lambda 函数.find_all()。例如:

from bs4 import BeautifulSoup


html_doc = '''
    <a href="#1">Something else</a>
    <a href="#2">This link contains Tartan Flannel Shirt</a>
    <a href="#3">Something else</a>
'''

soup = BeautifulSoup(html_doc, 'html.parser')

for link in soup.find_all('a', text=lambda t: 'Tartan Flannel Shirt' in t):
    print(link)

印刷:

<a href="#2">This link contains Tartan Flannel Shirt</a>

同样,您可以通过这种方式搜索属性,例如href=链接的属性:

from bs4 import BeautifulSoup


html_doc = '''
    <a href="http://link1">Link1</a>
    <a href="http://link2">Link2</a>
    <a href="http://link3">Link3</a>
'''

soup = BeautifulSoup(html_doc, 'html.parser')

for link in soup.find_all('a', href=lambda t: 'link2' in t):
    print(link)

印刷:

<a href="http://link2">Link2</a>

链接到beautifulsoupAPI。


推荐阅读