Python爬虫脚本运行时Shell无响应问题求助(附代码)
解决爬取Flipkart时Python Shell无响应的问题
嘿,我之前爬电商网站也遇到过一模一样的情况!Flipkart这类平台有反爬机制,你的请求要么被服务器拦截了,要么服务器故意不返回响应,才导致Python Shell一直卡住甚至显示“未响应”。给你几个实用的解决方案:
必须添加请求头模拟浏览器
直接用requests.get()发送请求时,请求头里的User-Agent会暴露你是Python程序,很容易被识别拦截。咱们把请求头改成浏览器的样子:import requests from bs4 import BeautifulSoup 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' } # 加上timeout参数,避免无限等待 webdump = requests.get("https://www.flipkart.com/", headers=headers, timeout=10).text soup = BeautifulSoup(webdump,'lxml') print(soup.prettify())这里的
timeout=10很重要——如果10秒内服务器没响应,程序会直接抛出超时错误,不会让Shell一直卡死。用Session维持会话(可选但有用)
有些网站会通过Cookies验证会话,用requests.Session()可以帮你自动管理Cookies,提升请求的成功率:session = requests.Session() session.headers.update(headers) # 先获取一次Cookies再请求目标页面 session.get("https://www.flipkart.com/", timeout=10) webdump = session.get("https://www.flipkart.com/", timeout=10).text更换HTML解析器试试
偶尔lxml解析器也可能因为页面结构复杂导致卡顿,你可以换成Python内置的html.parser:soup = BeautifulSoup(webdump, 'html.parser')避免频繁请求
如果后续要批量爬取,记得每次请求之间加个延迟(比如time.sleep(2)),不然很容易被封IP,导致请求无响应。
内容的提问来源于stack exchange,提问作者Nishant Kashyap
相关产品推荐
相关产品推荐

