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

Python爬虫抓取企业名录仅返回首个电话号码如何获取全部

问题核心原因

你使用的Python字符串find()方法只会返回第一个匹配内容的起始索引,因此只能提取到页面里第一个电话号码。要获取页面全部匹配的号码,直接用正则匹配所有符合规则的内容即可,修改成本很低。

修改后完整代码

from requests import get
import re

def starting():
    keyword = input("Suchbegriff: ")
    URL = f"https://www.herold.at/gelbe-seiten/{keyword}/"
    print("Targeting... : " + URL)
    # 加请求头模拟浏览器,避免被网站反爬拦截
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    }
    data = get(URL, headers=headers)
    # 正则匹配所有tel:开头的电话号码,规则是匹配双引号包裹的tel:+数字内容
    tel_list = re.findall(r'"tel:(\+[\d]+)"', data.text)
    # 去重后输出,避免同一个号码重复抓取
    tel_list = list(set(tel_list))
    for index, tel in enumerate(tel_list, 1):
        print(f"第{index}个企业电话:{tel}")

if __name__ == "__main__":
    starting()

修改说明

  • 引入了Python自带的re正则模块,re.findall()会返回页面所有符合匹配规则的结果,自动遍历全文不需要手动循环查找
  • 匹配规则r'"tel:(\+[\d]+)"'只会提取双引号里tel:后面的纯号码内容,不会带多余的字符
  • 增加了set()去重逻辑,避免同一个企业的电话在页面多个位置重复出现
  • 新增了浏览器UA请求头,降低被网站判定为爬虫拦截的概率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:12:04