requests中禁止重定向-PDF全文下载

1.知识点

在requests发送请求时添加allow_redirects=False

2.异常网站

aHR0cHM6Ly9hc21lZGlnaXRhbGNvbGxlY3Rpb24uYXNtZS5vcmcvdHJpYm9sb2d5L2FydGljbGUvZG9pLzEwLjExMTUvMS40MDQ2NTcxLzEwNzU2ODMvSW52ZXN0aWdhdGlvbi1vbi1GcmljdGlvbi1BbnRpLXdlYXItYW5kLUV4dHJlbWU=

3.现象与处理

在通过详细页获取pdf全文链接,发送请求下载全文时,请求经过多次跳转返回到账号登录页。通过在request请求方法中添加allow_redirects=False ,禁止请求跳转,在response中headers的location参数取到pdf的真正地址,发送此地址的请求,完成期刊全文的下载

4.演示代码

import requests
session =requests.session()
resposne = session.get(url,allow_redirects=False)

 

在Scrapy禁止重定向有几种方法。首先,如果你在start_requests方法顺序爬取执行,你可以在yield Request时添加meta参数,并设置dont_redirect为True,handle_httpstatus_list为\[302\],这样就可以重定向。例如: ```python def start_requests(self): yield Request(url, meta={ 'dont_redirect': True, 'handle_httpstatus_list': \[302\] }, callback=self.parse) ``` 如果你是在parse方法使用yield Request进行爬取,你可以添加dont_filter=True参数来过滤重复请求,并且同样需要设置dont_redirect为True和handle_httpstatus_list为\[302\]。例如: ```python def parse(self, response): url = "xxxxxxxxxx" yield Request(url, meta={ 'dont_redirect': True, 'handle_httpstatus_list': \[302\] }, callback=self.parse, dont_filter=True) ``` 另外,你也可以直接在yield Request时设置dont_redirect为True来重定向。例如: ```python yield Request(url, meta={ 'dont_redirect': True, 'handle_httpstatus_list': \[302\] }, callback=self.parse) ``` 以上是在Scrapy禁止重定向的几种方法。你可以根据具体的需求选择适合的方法来实现禁止重定向的功能。 #### 引用[.reference_title] - *1* *2* *3* [Scrapy爬虫遇见重定向301/302问题解决方法](https://blog.csdn.net/WuYan_Emperor/article/details/125540770)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值