在Python爬虫中阻止重定向可以通过以下几种方法实现:
1. 使用`requests`库的`allow_redirects`参数:
import requests
session = requests.Session()
response = session.get(url, allow_redirects=False) 设置为False来禁止重定向
2. 使用`urllib.request`模块,并继承`HTTPRedirectHandler`类重写`http_error_302`方法:
from urllib import request
class NoRedirHandler(request.HTTPRedirectHandler):
def http_error_302(self, req, fp, code, msg, headers):
return fp 返回原始文件指针,不跟随重定向
opener = request.build_opener(NoRedirHandler())
response = opener.open(url) 使用自定义的opener打开URL
3. 使用`scrapy`框架,在`settings.py`中设置`REDIRECT_ENABLED`为`False`:
settings.py
REDIRECT_ENABLED = False
4. 使用`scrapy`框架,在`settings.py`中添加自定义下载中间件来禁止重定向:
settings.py
DOWNLOADER_MIDDLEWARES = {
'myproject.middlewares.NoRedirectMiddleware': 100,
}
然后在中间件文件`middlewares.py`中实现禁止重定向的逻辑:
middlewares.py
class NoRedirectMiddleware(object):
def process_response(self, request, response, spider):
if response.status in (301, 302):
return None 返回None来阻止重定向
return response
选择适合您使用框架的方法来阻止重定向