爬虫 永久重定向 java_python爬虫解决网页重定向问题

笔者编写的搜索引擎爬虫在爬取页面时遇到了网页被重定向的状况,所谓重定向(Redirect)就是经过各类方法

(本文提到的为3种)将各类网络请求从新转到其它位置(URL)。

每一个网站主页是网站资源的入口,当重定向发生在网站主页时,若是不能正确处理就颇有可能会错失这整个网站的内容。javascript

如下列出遇到的3种重定向状况(使用python2.7+requests编写爬虫):html

1.服务器端重定向

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

2.meta refresh

即网页中的标签声明了网页重定向的连接,这种重定向由浏览器完成,须要编写代码进行处理。例如,某一重定向以下面的html代码第三行中的注释所示,浏览器可以自动跳转,但爬虫只能获得跳转前的页面,不能自动跳转。python

解决办法是经过获得跳转前的页面源码,从中提取出重定向url信息(上述代码第三行中的url属性值)。

具体的操做:使用xpath('//meta[@http-equiv="refresh" and @content]/@content')提取出content的值 或者使用正则表达式提取出重定向的url值。正则表达式

3.js 重定向

经过JavaScript代码形式进行重定向。以下面JavaScript代码segmentfault

对于这种方式的跳转,因为能够实现该功能的JavaScript语句有多种形式,不能再使用正则表达式提取url,只能考虑加载JavaScript代码来进行解决,例如使用selenium 无头浏览器phantomJS 模拟浏览器操做

关于phantomJS的一些简单操做语法能够在我这篇phantomJS中看下浏览器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值