一条大土狗o_O 2019-11-04 16:07 采纳率: 0%
浏览 1357

python,爬虫遇到重定向页面,如何获取动向后地址的response headers里的内容?

爬虫大致流程是这样的

图片说明

我想获取resul.jsf里Location的值

图片说明

下面是我写的代码,但是得不到结果,求大佬帮忙看一下。

我首先访问这个站点https://patentscope2.wipo.int/search/en/search.jsf ,从页面信息中获取ViewData的值,然后构建post data,把data加进去再次访问这个网站。

图片说明

import re
import requests
s = requests.Session()
r = s.get('https://patentscope2.wipo.int/search/en/search.jsf')
resp = r.text
# 获取ViewState值
viewstate = re.findall('ViewState:0.*value=\"([0-9\-:]*)\"',resp)[0]

# 构建data字典
searchfp = 'US20180094236'
data={'javax.faces.partial.ajax': 'true',
     'javax.faces.source': 'simpleSearchForm:commandSimpleFPSearch',
     'javax.faces.partial.execute': '@all',
     'simpleSearchForm:commandSimpleFPSearch': 'simpleSearchForm:commandSimpleFPSearch',
     'simpleSearchForm': 'simpleSearchForm',
     'simpleSearchForm:j_idt216_focus': '',
     'simpleSearchForm%3Aj_idt206_input': 'FP',
     'simpleSearchForm:fpSearch': searchfp,
     'javax.faces.ViewState': viewstate}
r = s.post('https://patentscope2.wipo.int/search/en/search.jsf',data = data)

然后得到一个result.jsf连接地址,再访问这个连接却得不到目标数据

图片说明

# 获取/result.jsf链接地址
vid = re.findall('_vid=([A-Z0-9\-]*)\"',r.text)[0]
re_url = 'https://patentscope2.wipo.int/search/en/result.jsf?_vid='+vid

# 访问/result.jsf后却没有去到正确的地方
r = s.get(re_url)
resp = r.text

print(r.headers)
print(r.status_code)
print(resp)
# 这里status_code时500,并且有页面内容,但不是目标页面
  • 写回答

1条回答

  • 曲江涛 2023-05-17 12:34
    关注

    在Python中使用爬虫处理重定向页面时,您可以使用requests库来获取重定向后地址的响应头信息。requests库提供了一个allow_redirects参数,可以控制是否允许重定向。当设置allow_redirects=True时,requests库将自动处理重定向,并返回最终重定向后的响应。

    以下是一个示例代码,演示如何获取重定向后地址的响应头内容:

    import requests
    
    url = 'http://example.com/redirect-page'
    
    response = requests.get(url, allow_redirects=True)
    
    final_url = response.url
    response_headers = response.headers
    
    print('Final URL:', final_url)
    print('Response Headers:', response_headers)
    

    在上述代码中,我们使用requests.get方法发送GET请求,并将allow_redirects参数设置为True,以允许重定向。然后,我们可以通过response.url获取最终重定向后的地址,通过response.headers获取响应头信息。

    请注意,如果重定向过程涉及多个跳转,response.url将给出最终重定向的地址。而response.history属性将包含中间所有跳转的历史记录。

    通过这种方式,您可以获取重定向后地址的响应头内容。您可以根据需要进一步处理响应头信息,例如提取特定的头字段值或进行其他操作。

    注意:在实际使用中,请遵守网站的规则和法律法规,确保您的爬取行为符合合法和道德的要求。

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?