Beautiful Soup返回空HTML?新手爬取网页遇问题求助
解决BeautifulSoup爬取返回空字符串的问题
嘿,别担心,新手刚接触爬虫遇到这种情况太正常啦!我帮你分析下问题所在:
你当前的代码用urllib.request.urlopen直接发起请求,很多网站会识别出这是Python程序的默认请求(没有带浏览器标识的User-Agent),会直接拦截你的请求,所以你拿到的是空的响应内容。
解决方案:添加请求头伪装成浏览器请求
我们只需要给请求加上浏览器的User-Agent标识,让网站以为是真实用户在访问,修改后的代码如下:
from urllib.request import urlopen, Request from bs4 import BeautifulSoup as soup url = 'https://www.ccna8.com/ccna4-v6-0-final-exam-full-100-2017/' # 模拟Chrome浏览器的请求头,你也可以换成其他浏览器的标识 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' } # 创建带请求头的Request对象 req = Request(url, headers=headers) uClient = urlopen(req) page_html = uClient.read() uClient.close() page_soup = soup(page_html, "lxml") # 用prettify()格式化输出,更易读 print(page_soup.prettify())
额外提示
如果添加请求头后还是返回空内容,那可能网站的内容是通过JavaScript动态渲染的,这时候你需要用selenium这类工具模拟浏览器加载页面。不过先试试上面的方法,绝大多数新手遇到的这类问题都是请求头不规范导致的。
内容的提问来源于stack exchange,提问作者Time4Boom
相关产品推荐
相关产品推荐

