BeautifulSoup python 正则 过滤url中包含tag的
时间: 2024-01-29 12:02:05 浏览: 75
可以使用正则表达式过滤出包含tag的url,具体代码实现可以参考以下示例:
```python
import re
from bs4 import BeautifulSoup
html = """
<a href="https://www.example.com/tag1/page1/">Link1</a>
<a href="https://www.example.com/tag2/page2/">Link2</a>
<a href="https://www.example.com/tag1/page3/">Link3</a>
"""
soup = BeautifulSoup(html, "html.parser")
tag = "tag1"
pattern = re.compile(f"/{tag}/")
for link in soup.find_all("a", href=pattern):
print(link.get("href"))
```
以上代码会输出:
```
https://www.example.com/tag1/page1/
https://www.example.com/tag1/page3/
```
其中,通过 BeautifulSoup 将 HTML 文本解析成一个文档对象,然后使用正则表达式匹配 href 属性中包含指定标签的链接。更多关于 BeautifulSoup 和正则表达式过滤 URL 的用法可以参考相关文档和教程。
相关问题
用beautifulsoup、正则表达式等库,爬取http://www.nmc.cn/publish/forecast/AZJ/cangnan.html的未来7天风速信息
好的,我可以为您实现这个功能。以下是使用Python的代码示例,可以爬取http://www.nmc.cn/publish/forecast/AZJ/cangnan.html并且获取未来7天的风速信息:
```python
import requests
from bs4 import BeautifulSoup
import re
# 发起网络请求
url = 'http://www.nmc.cn/publish/forecast/AZJ/cangnan.html'
response = requests.get(url)
# 使用BeautifulSoup解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')
# 查找所有的天气预报信息
forecast = soup.find('div', {'class': 'forecast'})
# 找到“未来7天”这个标签下的信息
future_7_days = forecast.find('div', {'class': 'days7'})
# 遍历所有的时间段
for time_bar in future_7_days.find_all('div', {'class': 'time'}):
# 获取日期
date = time_bar.find('h3').text
# 找到风速标签
wind_tag = time_bar.find('p', {'class': 'win'})
# 获取风力信息
wind_speed = re.findall(r'\d+', wind_tag.find('i', {'class': 'w'}).text)[0]
# 获取风向信息
wind_direction = wind_tag.find('em').text
# 输出结果
print(f'{date} 风速为 {wind_speed} km/h,风向为 {wind_direction}')
```
请注意,此代码示例仅供参考和学习,不应用于非法用途或侵犯他人隐私!
如何在beautifulsoup中使用正则表达式
在BeautifulSoup中,您可以使用正则表达式来搜索和匹配标签、属性和标签内容。以下是一些示例代码:
```python
from bs4 import BeautifulSoup
import re
# 假设您已经获取到HTML文档的内容,存储在变量html中
html = """
<html>
<head>
<title>网页标题</title>
</head>
<body>
<h1>这是一个标题</h1>
<p>这是一个段落</p>
<a href="https://www.example.com">这是一个链接</a>
<img src="image.jpg" alt="图片">
</body>
</html>
"""
# 创建BeautifulSoup对象,解析HTML
soup = BeautifulSoup(html, 'html.parser')
# 使用正则表达式搜索标签
tags = soup.find_all(re.compile('^h\d$')) # 匹配所有h1到h9标签
for tag in tags:
print(tag.text)
# 使用正则表达式搜索属性值
links = soup.find_all('a', href=re.compile('example')) # 匹配href属性中包含'example'的a标签
for link in links:
print(link['href'])
# 使用正则表达式搜索标签内容
pattern = re.compile(r'图片')
imgs = soup.find_all(text=pattern) # 匹配所有含有'图片'的文本内容
for img in imgs:
print(img)
```
在上述代码中,我们使用了`re.compile()`函数创建了一个正则表达式对象。然后,我们可以在`find_all()`方法中使用该对象来进行搜索。在第一个示例中,我们使用正则表达式`^h\d$`来匹配所有h1到h9标签。在第二个示例中,我们使用正则表达式`example`来匹配href属性中包含'example'的a标签。在第三个示例中,我们使用正则表达式`图片`来匹配所有含有'图片'的文本内容。
阅读全文