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

使用BeautifulSoup爬取Indeed网站时requests.get(url)迭代2-6次后挂起的问题求助

解决Indeed爬虫多次请求后挂起的问题

嘿,我之前也踩过这个坑——Indeed的反爬机制不会一上来就封禁你,而是会在检测到异常请求频率或者非浏览器特征的请求时,逐步限制访问,导致请求挂起甚至超时。初始请求能成功,恰恰是因为还没触发更严格的限制,接下来咱们一步步解决:

1. 正确设置请求头模拟真实浏览器

这是核心解决点,Indeed会通过请求头里的字段判断请求是否来自爬虫。你用的是Safari+MacOS12.4,直接从Safari里复制真实请求头就行:

  • 打开Safari开发者工具(快捷键Cmd+Opt+I)
  • 访问Indeed官网,在Network标签里找任意一个请求,复制它的Request Headers

把这些头信息加到代码里,示例如下:

import requests
from bs4 import BeautifulSoup

# 替换成你从Safari复制的真实请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 12_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15",
    "Accept-Language": "zh-CN,zh;q=0.9",
    "Referer": "https://www.indeed.com/",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
}

# 用Session保持会话,更贴近真实用户的访问模式
session = requests.Session()
session.headers.update(headers)

# 发起请求示例
target_url = "你的Indeed目标页面URL"
response = session.get(target_url)
soup = BeautifulSoup(response.text, "html.parser")

2. 控制请求频率,添加随机延迟

频繁请求肯定会触发反爬,建议在每次请求之间加随机延迟,模拟用户浏览间隔:

import time
import random

# 每次请求后随机等待2-5秒
time.sleep(random.uniform(2, 5))

3. 其他避坑建议

  • 不要一次性爬太多页面,分批次进行,避免短时间内请求量过载
  • 查看Indeed的robots.txt(访问https://www.indeed.com/robots.txt),确保爬取内容在允许范围内
  • 如果还是出现挂起,可以尝试更换代理IP,但要选可靠的代理,避免被检测到

调整后应该能解决请求挂起的问题——Indeed确实允许非商业性爬虫访问,但前提是要模拟真实用户的行为,别触发它的反爬阈值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 01:47:37