使用requests模块无法从静态网页抓取不同公司名称
解决方法
首先,先确认请求是否正常返回页面内容:在res = s.get(link)后添加print(res.status_code),如果返回200说明请求成功,否则可能需要调整请求头或处理反爬限制。
其次,CSS选择器错误是导致无法获取内容的核心原因。实际页面中,公司名称所在的h3标签class是company-name而非company_info,正确的选择器应为 h3.company-name a。
修正后的代码如下:
import requests from bs4 import BeautifulSoup link = 'https://clutch.co/agencies/digital-marketing' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36', 'Accept-Language': 'en-US,en;q=0.9' # 可选,添加语言头避免内容展示异常 } with requests.Session() as s: s.headers.update(headers) res = s.get(link) print(res.status_code) # 确认请求状态是否正常 soup = BeautifulSoup(res.text,"lxml") # 使用修正后的选择器提取公司名称 for item in soup.select("h3.company-name a"): print(item.text.strip())
如果修正后仍无法获取内容,可能网站存在基础反爬机制,可以尝试添加Referer头,或者先访问网站首页获取Cookies后再请求目标页面,但从静态页面的属性来看,修正选择器即可解决问题。
内容的提问来源于stack exchange,提问作者MITHU
相关产品推荐
相关产品推荐

