python爬虫爬网页时遇到网页重定向怎么办-Python教程

资源魔 20 0

搜寻引擎爬虫正在爬取页面时会遇到网页被重定向的状况,所谓重定向(Redirect)就是经过各类办法(本文提到的为3种)将各类网络申请从新转到其它地位(URL)。每一个网站主页是网站资本的入口,当重定向发作正在网站主页时,假如不克不及正确解决就颇有可能会错失这整个网站的内容。

一、效劳器端重定向,正在效劳器端实现,普通来讲爬虫能够自顺应,是没有需求特地解决的,如呼应代码301(永世重定向)、302(临时重定向)等。详细来讲,能够经过requests申请失去的response工具中的url、status_code两个属性来判别。当status_code为30一、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'])

二、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值。

三、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爬虫爬网页时遇到网页重定向怎样办的具体内容,更多请存眷资源魔其它相干文章!

标签: python教程 python编程 python使用问题 python爬网页时网页重定向

抱歉,评论功能暂时关闭!