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

Python方法重写是什么?如何重写父类方法?

Python3.7 安装 “pyaudio” 教程

Python按哪个键运行

Python缩进有什么用

Python函数之dir()函数

爬虫问题解决的相关问题

Python怎么用idle

pandas如何读取excel文件

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




打赏

取消

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

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

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

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

评论

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