python爬虫爬网页时遇到网页重定向怎么办


本文摘自php中文网,作者尚,侵删。

搜索引擎爬虫在爬取页面时会遇到网页被重定向的情况,所谓重定向(Redirect)就是通过各种方法(本文提到的为3种)将各种网络请求重新转到其它位置(URL)。每个网站主页是网站资源的入口,当重定向发生在网站主页时,如果不能正确处理就很有可能会错失这整个网站的内容。

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

1

2

3

4

5

6

7

#请求重定向

#方法一

response.setStatus(302);

response.setHeader("location", "/day06/index.jsp");

         

#方法二

response.sendRedirect("/day06/index.jsp");

scrapy shell 获取重定向页面

1

2

scrapy shell -s ROBOTSTXT_OBEY=False --no-redirect "

fetch(response.headers['Location'])

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

1

2

3

4

5

<html>

<head

  <meta http-equiv="refresh" content="0.1;url=http://www.redirectedtoxxx.com/"><!--本网页会在0.1秒内refresh为url所指的网页-->

</head>

</html>

解决办法是通过得到跳转前的页面源码,从中提取出重定向url信息(上述代码第三行中的url属性值)。一个具体的操作:

阅读剩余部分

相关阅读 >>

Python到底是什么类型的语言

Python自学用什么书

Python spyder界面无法打开的解决方法

Python和selenium对浏览器窗口进行处理的代码实例

Python如何遍历所有数组

Python实现蒙特卡罗方法(代码示例)

自动化环境搭建(Python-selenium)

Pythons是什么

Python多线程同步是什么?什么是线程锁?

Python的线程join怎么用

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...