码迷,mamicode.com
首页 > Web开发 > 详细

爬虫解决网页重定向问题

时间:2018-12-31 21:11:54      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:xxx   在服务器   表达式   blank   响应   浏览器   word   实现   标签   

爬虫解决网页重定向问题

https://blog.csdn.net/ingiaohi/article/details/72672169

 

1.服务器端重定向,在服务器端完成,一般来说爬虫可以自适应,是不需要特别处理的,如响应代码301(永久重定向)、302(暂时重定向)等。具体来说,可以通过requests请求得到的response对象中的url、status_code两个属性来判断。当status_code为301、302或其他代表重定向的代码时,表示原请求被重定向;当response对象的url属性与发送请求时的链接不一致时,也说明了原请求被重定向且已经自动处理。

 

2.meta refresh,即网页中的<meta>标签声明了网页重定向的链接,这种重定向由浏览器完成,需要编写代码进行处理。例如,某一重定向如下面的html代码第三行中的注释所示,浏览器能够自动跳转,但爬虫只能得到跳转前的页面,不能自动跳转。

[html] view plain copy
 
 
 
  1. <html>  
  2. <head>  
  3. <meta http-equiv="refresh" content="0.1;url=http://www.redirectedtoxxx.com/"><!--本网页会在0.1秒内refresh为url所指的网页-->  
  4. </head>  
  5. </html>  

解决办法是通过得到跳转前的页面源码,从中提取出重定向url信息(上述代码第三行中的url属性值)。一个具体的操作:①使用xpath(‘//meta[@http-equiv="refresh" and @content]/@content‘)提取出content的值 ②使用正则表达式提取出重定向的url值。

 

 

3.js 重定向,通过JavaScript代码形式进行重定向。如下面JavaScript代码

[html] view plain copy
 
 
 
  1. <script language=javascript>window.location.href=‘http://www.redirectedtoxxx.com‘</script>  

对于这种方式的跳转,由于可以实现该功能的JavaScript语句有多种形式,不能再使用正则表达式提取url,只能考虑加载JavaScript代码来进行解决。

爬虫解决网页重定向问题

标签:xxx   在服务器   表达式   blank   响应   浏览器   word   实现   标签   

原文地址:https://www.cnblogs.com/timxgb/p/10203165.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!