为何使用Python+BeautifulSoup爬取Upwork职位返回空列表[]?
Upwork职位爬取返回空列表的原因及解决方法
问题原因
- 反爬机制拦截
Upwork有严格的反爬策略,直接用requests.get发起请求会被服务器识别为非浏览器请求,返回的HTML里根本没有你要找的职位元素,自然搜不到结果。 - 目标元素定位错误
你用的job-description-line-clamp类名可能已经失效,Upwork的页面结构会定期更新,当前页面的职位描述元素大概率换了类名或标签结构。
解决办法
- 添加请求头模拟浏览器
给请求加上浏览器的User-Agent,让服务器认为是正常用户访问。示例代码:
from bs4 import BeautifulSoup import requests 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('https://www.upwork.com/nx/jobs/search/?q=Lead%20Generation&sort=recency', headers=headers) soup = BeautifulSoup(response.text, 'lxml') # 先打印页面结构确认是否拿到真实内容 print(soup.prettify())
重新定位目标元素
打开Upwork职位搜索页,按F12调出开发者工具,找到职位卡片对应的HTML标签和类名,替换代码里的定位参数。比如现在职位卡片可能用job-tile类包裹,描述内容在job-description类的标签里。优先使用官方API
如果需要长期稳定获取数据,直接用Upwork的官方API是合规方案,不用解析HTML,也不会触发反爬,能拿到结构化的职位信息。
内容的提问来源于stack exchange,提问作者İqbal Mirzeyev
相关产品推荐
相关产品推荐

