请教:爬取招聘页面时BeautifulSoup的find()返回None的原因
爬取返回None的常见原因及解决办法
针对你遇到的find()返回None的问题,结合代码和目标网站,主要有这几个可能:
目标元素的标签或class已变更
你代码里指定的h5标签和mb-0 p-2 w-100 bd-highlight fs-22类名,可能已经被网站修改了。建议打开目标页面的开发者工具(F12),重新定位标题元素,确认正确的标签和class。比如实际查看该页面,标题可能用了h1标签或者不同的类名组合。请求被反爬机制拦截
默认的requests.get()请求头里的User-Agent是python-requests/xxx,很容易被网站识别为爬虫,返回的内容并非真实页面(可能是空白页或验证页)。你可以添加模拟浏览器的请求头:headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' } website = requests.get(url, headers=headers)添加后再检查返回的
website.text是否包含目标内容。元素是动态加载的
如果目标页面使用JavaScript动态渲染内容,requests只能获取静态HTML源码,动态生成的元素不会出现在website.content里。这种情况你需要用selenium或者playwright这类工具模拟浏览器加载页面,再提取元素。比如用selenium的示例:from selenium import webdriver from bs4 import BeautifulSoup driver = webdriver.Chrome() driver.get(url) Soup = BeautifulSoup(driver.page_source, 'html.parser') Title = Soup.find('h5', class_="mb-0 p-2 w-100 bd-highlight fs-22") print(Title) driver.quit()
另外,建议先打印website.status_code确认请求是否成功(200是成功),再打印website.text看看返回的内容是否和浏览器里的一致,这样能快速定位问题所在。
内容的提问来源于stack exchange,提问作者Alain Procs
相关产品推荐
相关产品推荐

