You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python的requests与BeautifulSoup在网页中搜索多个预定义模式的字符串及代码修复

解决Python网页多模式字符串搜索问题

首先得指出你原来代码的核心问题:你现在的判断逻辑根本没去网页内容里搜索,只是在检查每个查询字符串是否以queries里的任意元素开头——而每个q本身就是queries的成员,所以必然返回True,这就是为什么所有结果都显示Found,完全没实现你要的网页搜索功能。

正确实现思路

要完成你想要的“在网页中搜索符合预定义模式的完整字符串(比如完整链接)”,我们可以结合requests获取网页内容,用正则表达式匹配完整链接(或者用BeautifulSoup解析HTML后提取链接),具体步骤如下:

  • 用requests请求目标网页,获取HTML内容(注意添加浏览器头避免反爬)
  • 针对每个预定义的模式(t.me、twitter、www.),编写正则表达式匹配对应的完整URL
  • 遍历每个模式,在网页内容中查找匹配项:
    • 如果找到匹配的完整链接,输出链接+- Found
    • 如果没有找到,输出模式+- not found

修复后的完整代码

import requests
import re

# 目标网页URL
url = "https://bscscan.com/address/0x88c20beda907dbc60c56b71b102a133c1b29b053#code"
# 预定义的搜索模式及对应的正则表达式
query_patterns = {
    "t.me": r"https?://t\.me/[\w/]+",
    "twitter": r"https?://(www\.)?twitter\.com/[\w/]+",
    "www.": r"https?://www\.[\w\-\.]+\.[a-z]{2,}"
}

try:
    # 添加headers模拟浏览器,避免被反爬拦截
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
    }
    response = requests.get(url, headers=headers)
    response.raise_for_status()  # 检查请求是否成功
    html_content = response.text

    # 遍历每个搜索模式处理结果
    for pattern_name, regex in query_patterns.items():
        matches = re.findall(regex, html_content)
        if matches:
            # 去重后输出所有匹配的完整链接
            unique_matches = list(set(matches))
            for match in unique_matches:
                print(f"{match} - Found")
        else:
            print(f"{pattern_name} - not found")

except requests.exceptions.RequestException as e:
    print(f"请求网页时出错: {e}")

代码说明

  • 反爬处理:添加User-Agent头模拟浏览器访问,避免被目标网站的反爬机制拦截
  • 清晰维护:用字典存储模式名称和对应正则,方便后续新增或修改搜索规则
  • 去重处理:通过set对匹配结果去重,避免重复输出相同链接
  • 异常捕获:处理请求过程中可能出现的网络问题、HTTP错误等情况

运行这段代码后,就能得到你期望的类似输出:

https://t.me/Shibuttinu - Found
www.shibuttinu.com - Found
twitter - not found

内容的提问来源于stack exchange,提问作者rbutrnz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 04:34:05