You need to enable JavaScript to run this app. 首次用Python做网页爬虫失败,Python for Everyone中urllib示例无预期输出
优惠活动
大模型
产品
解决方案
定价
更多

首次用Python做网页爬虫失败,Python for Everyone中urllib示例无预期输出

问题原因与解决方法

核心问题出在正则表达式的写法错误:

  • 正则开头添加的^是行/字符串起始匹配锚点,而HTML内容中href属性前必然存在<a标签、空格等内容,不可能处于行首位置,导致re.findall无法匹配到任何结果,因此没有输出。

修正后代码

仅需删除正则开头的^锚点即可正常运行:

# 从输入的URL中提取链接
import urllib.request, urllib.parse, urllib.error
import re
import ssl

# 忽略SSL证书错误
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

url = input("Enter- ")
html = urllib.request.urlopen(url, context = ctx).read()
# 移除开头的^锚点即可匹配所有符合规则的href属性
links = re.findall(b'href="(http[s]?://.*?)"', html)

for link in links:
    print(link.decode())

可选优化建议

  • 如需兼容部分不规范的HTML写法(比如href前存在多个空格),可将正则调整为b'\s*href="(http[s]?://.*?)"',提升匹配兼容性。
  • 实际开发场景中不推荐使用正则解析HTML,可选择BeautifulSoup等专用HTML解析库,容错能力和解析准确率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 11:45:05