新手爬虫问题:爬取Wuzzuf职位经验需求遇User-Agent限制及反爬困惑
爬虫问题解答
一、无User-Agent无法爬取的原因
- 多数网站会通过校验请求头里的
User-Agent字段识别请求来源:- 不带
User-Agent的请求会被判定为非浏览器发起的自动化请求(比如爬虫),网站为避免被恶意爬取,会直接拒绝这类请求或返回空白内容。 - 正常浏览器访问时会自动携带
User-Agent,标识自身浏览器类型与版本,网站会判定为合法用户访问,允许获取内容。
- 不带
二、当前代码逻辑优化
你当前代码定位的div.css-rcl8e5并非目标数据所在标签,目标“Experience Needed”内容在span.css-4xky9y里,可调整定位逻辑:
import requests from bs4 import BeautifulSoup # 目标职位链接 link = "https://wuzzuf.net/jobs/p/OlVbxLtwTToL-Senior-IT-Specialist-Orient-Qalubia-Egypt" HEADERS = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36', 'Accept-Language': 'en-US,en;q=0.5' } src = requests.get(link, headers=HEADERS) soup = BeautifulSoup(src.content, "lxml") # 精准定位Experience Needed内容 exp_label = soup.find("div", string="Experience Needed") if exp_label: experience_text = exp_label.find_next_sibling("div").find("span", class_="css-4xky9y").text.strip() print(experience_text) else: print("未找到Experience Needed字段")
三、绕过“我不是机器人”验证的方法
- 用浏览器自动化工具:比如Selenium、Playwright,这类工具模拟真实浏览器操作,能处理滑块等简单验证码,注意控制请求频率,模拟人类操作节奏。
- 使用代理IP:分散请求来源,降低单IP请求频率,避免被网站识别封禁。
- 遵守robots协议:查看网站
/robots.txt文件,只爬取允许的内容,减少触发反爬的概率。 - 添加请求延迟:在请求之间设置随机延迟(比如1-3秒),模拟人类浏览间隔。
内容的提问来源于stack exchange,提问作者Mo Wael
相关产品推荐
相关产品推荐

