python - 我正在尝试使用 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>
如果我运行上面的程序,输出是网站中每个链接的列表,但我希望它只显示里面有格子法兰绒衬衫的链接。
解决方案
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>
推荐阅读
- reactjs - Redux Forms 有时会以注册/注销无限循环结束
- sql - SQL 插入语句以将 SAS 日期传递给 MS Access DB
- c++ - 在线程中运行 lambda 时如何减少副本?
- ruby - 如何在静态数组中添加创建的对象?
- linux - Git结帐分支不起作用
- pdf - PDF-文本块可以包含 2 个或更多单词吗?
- git - 从 git 获取提交中行更改的详细信息的方法(即删除第 3 行,第 4 行变为第 3 行)
- c - 将 IRAM 的优先级赋予 C 中的特定源文件
- security - 对锚点服务器的远程身份验证
- python - Django 在 TextField 中搜索