js提取指定网站内容(搜索引擎爬虫爬取网页被重定向的操作方法(图))

优采云 发布时间: 2021-11-29 11:09

  js提取指定网站内容(搜索引擎爬虫爬取网页被重定向的操作方法(图))

  作者写的搜索引擎爬虫在爬取页面时遇到了网页被重定向的情况。所谓重定向就是通过各种方法(本文提到的三种)(URL)将各种网络请求重定向到其他位置。每个网站首页都是网站资源的入口。当重定向发生在网站的首页时,如果处理不当,很可能会遗漏网站的全部内容。

  作者写的爬虫在爬取网页时遇到了三种重定向情况。

  1.服务器端重定向是在服务器端完成的。一般来说爬虫是可以自适应的,不需要特殊处理,比如响应码301(永久重定向)、302(临时重定向)等,具体可以通过响应中的url和status_code这两个属性来判断requests 请求获取的对象。当status_code为301、302或其他代表重定向的code时,表示原请求被重定向;当响应对象的 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,即网页中的标签声明了网页重定向的链接。这个重定向是由浏览器完成的,需要通过编写代码来处理。比如下面HTML代码第三行的注释中如果出现某个重定向,浏览器可以自动跳转,但是爬虫只能获取跳转前的页面,不能自动跳转。

  解决方法是通过获取跳转前的页面源代码来提取重定向url信息(上面代码第三行的url属性值)。具体操作:

  ①使用xpath('//meta[@http-equiv="refresh" and @content]/@content')提取content的值

  ②使用正则表达式提取重定向的url值。

  3.js 重定向,重定向是以 JavaScript 代码的形式进行的。比如下面的JavaScript代码

  网页收录内容的情况是最容易解决的。一般来说,它基本上是静态网页的硬编码内容,或者是动态网页,使用模板渲染。当浏览器获取到 HTML 时,它已经收录了所有的关键信息,所以你在网页上直接看到的内容可以通过特定的 HTML 标签加载 javascript 代码。这种情况是因为虽然网页显示时内容在HTML标签中,但实际上是通过执行js代码添加到标签中的。所以此时的内容在js代码中,js的执行是浏览器端的操作,所以当你使用程序请求网页地址时,得到的响应就是网页代码和js代码,这样就可以在浏览器端看到内容了,因为解析的时候没有执行js,所以指定的HTML标签下的内容必须是空的。这时候的处理方法一般是找到收录内容的js代码字符串,然后通过正则表达式获取对应的内容,而不是解析HTML标签。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线