python爬虫爬网页时遇到网页重定向怎么办
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python爬虫爬网页时遇到网页重定向怎么办,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2496字,纯文字阅读大概需要4分钟。
内容图文
搜索引擎爬虫在爬取页面时会遇到网页被重定向的情况,所谓重定向(Redirect)就是通过各种方法(本文提到的为3种)将各种网络请求重新转到其它位置(URL)。每个网站主页是网站资源的入口,当重定向发生在网站主页时,如果不能正确处理就很有可能会错失这整个网站的内容。
1、服务器端重定向,在服务器端完成,一般来说爬虫可以自适应,是不需要特别处理的,如响应代码301(永久重定向)、302(暂时重定向)等。具体来说,可以通过requests请求得到的response对象中的url、status_code两个属性来判断。当status_code为301、302或其他代表重定向的代码时,表示原请求被重定向;当response对象的url属性与发送请求时的链接不一致时,也说明了原请求被重定向且已经自动处理。
#请求重定向 #方法一 response.setStatus(302); response.setHeader("location", "/day06/index.jsp"); #方法二 response.sendRedirect("/day06/index.jsp");
scrapy shell 获取重定向页面
scrapy shell -s ROBOTSTXT_OBEY=False --no-redirect " fetch(response.headers['Location'])
2、meta refresh,即网页中的<meta>标签声明了网页重定向的链接,这种重定向由浏览器完成,需要编写代码进行处理。例如,某一重定向如下面的html代码第三行中的注释所示,浏览器能够自动跳转,但爬虫只能得到跳转前的页面,不能自动跳转。
<html> <head> <meta http-equiv="refresh" content="0.1;url=http://www.redirectedtoxxx.com/"><!--本网页会在0.1秒内refresh为url所指的网页--> </head> </html>
解决办法是通过得到跳转前的页面源码,从中提取出重定向url信息(上述代码第三行中的url属性值)。一个具体的操作:
①使用xpath('//meta[@http-equiv="refresh" and @content]/@content')提取出content的值
②使用正则表达式提取出重定向的url值。
3、js 重定向,通过JavaScript代码形式进行重定向。如下面JavaScript代码
<script language=javascript>window.location.href='http://www.redirectedtoxxx.com'</script>
网页包含内容这种情况是最容易解决的,一般来讲基本上是静态网页已经写死的内容,或者动态网页,采用模板渲染,浏览器获取到HTML的时候已经是包含所有的关键信息,所以直接在网页上看到的内容都可以通过特定的HTML标签得到javascript代码加载内容,这种情况是由于虽然网页显示时,内容在HTML标签里面,但是其实是由于执行js代码加到标签里面的,所以这个时候内容在js代码里面的,而js的执行是在浏览器端的操作,所以用程序去请求网页地址的时候,得到的response是网页代码和js的代码,所以自己在浏览器端能看到内容,解析时由于js未执行,肯定找到指定HTML标签下内容肯定为空,这个时候的处理办法,一般来讲主要是要找到包含内容的js代码串,然后通过正则表达式获得相应的内容,而不是解析HTML标签。
更多Python相关技术文章,请访问Python教程栏目进行学习!
以上就是python爬虫爬网页时遇到网页重定向怎么办的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的python爬虫爬网页时遇到网页重定向怎么办全部内容,希望文章能够帮你解决python爬虫爬网页时遇到网页重定向怎么办所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。