您的位置:首页 > 新闻资讯 >文章内容
网站使用AJAX异步加载后,爬虫是怎么进行抓取的?
来源:互联网 作者:admin 时间:2019-02-22 16:53:18

    对于AJAX异步加载,大部分都是不理解的,但是我们都见过。其实我们日常使用设备上网的时候,经常会遇到AJAX异步加载,比如搜索信息会先出来一部分数据,当玩下滑的时候不断有新的数据出现。


    也就死说,使用AJAX异步加载,可以实现在不重新加载整个网页的情况下,对网页的某部分进行更新。那么对于网站使用AJAX异步加载后,爬虫是怎么进行抓取的?


    对于这类网页,我们一般采用两种方法:


    1、通过抓包找到异步加载请求的真正地址


    2、通过PhantomJS等无头浏览器执行JS代码后再抓取


    但是通常采取第一种方法,因为第二种方法使用无头浏览器会大大降低抓取的效率。


    异步加载网站抓取示例 :


    使用豆瓣电影分类排行榜作为抓取示例,电影信息网页源码中没有,并且采用鼠标下拉更新页面,这时需要我们在需要抓取的页面打开Chrome的开发者工具,选择network,实现一次下拉刷新


    发现新增了一个get请求,并且响应为JSON格式。观察JSON的内容,发现正是需要抓取的内容。


    抓取内容的问题解决了,接下来处理多页抓取问题,因为请求为get形式,所以首先进行几次下拉刷新,观察请求链接的变化,会发现请求的地址中只有start的值在变化,并且每次刷新增加20,其他都不变,所以我们更改这个参数就可以实现翻页。


    由于之前已经在items.py中对需要抓取的数据做了声明,所以只需要在scraoyspider/spiders目录下创建一个新的爬虫文件


    douban_actions.py,代码如下:


网站使用AJAX异步加载后,爬虫是怎么进行抓取的?

网站使用AJAX异步加载后,爬虫是怎么进行抓取的?


    然而,很多时候ajax请求都会经过后端鉴权,不能直接构造URL获取。这时就可以通过PhantomJS、chromedriver等配合Selenium模拟浏览器动作,抓取经过js渲染后的页面。


    使用这种方法有时会遇到定位网页页面元素定位不准的情况,这时就要注意网页中的frame标签,frame标签有frameset、frame、iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe对selenium定位而言是一样的,需要进行frame的跳转。


    以上就是如何抓取AJAX异步加载页面的方法,仅供参考。不管是面对哪种反爬虫,其实只要舍得花成本,还是有方法可以抓取的,毕竟不管反爬虫多么的厉害,也是人弄的,总有人技术更好。但是当成本高于经济效率时,自然就不会抓取了。


相关文章内容简介
推荐阅读
  • 12 2019-06
    代理服务器的定义和作用

    代理服务器的定义和作用,很多人都可能了解的似是而非,能了解一点,却不并不是很透彻。今天机灵代理小编带大家去看看关于代理服务器的定义和作用。

  • 11 2019-04
    用爬虫代理爬取豆瓣电影榜单并构建知识图谱

    ​用爬虫代理爬取豆瓣电影榜单并构建知识图谱:想学习知识图谱,奈何没有数据,只能自己找,于是选择了豆瓣电影。首先我们要通过爬虫去爬取电影榜单,之后再进行知识图谱的构建的

  • 15 2019-03
    网络爬虫哪些数据需要进行伪装?IP伪装可以使用代理IP

    网络爬虫为了完成去目标网站抓取信息的任务,是必须要先进行伪装的,否则是拿不到信息的。关于网络爬虫的伪装,唯一的要求就是跟真实用户获取数据一样,若没有达到这个效果,自然也就

  • 23 2019-03
    学习python爬虫,需要掌握网站抓取、伪装技巧、代理IP工具

    学习python爬虫,需要学习哪些知识?都说python比较容易学,而且用途也比较广,不管是进行数据的采集,还是做其他的一些开发,其实都可以使用python的。

  • 26 2019-03
    代理网站选择那种服务器更好?

    各大网站使用服务器的越来越多,更重要的是有很多网站为了维持系统稳定性常使用较多的服务器来维持平衡。拿一个例子来讲,很多学校所使用的服务器大部分都是小服务器,这也导致大部分

  • 21 2019-03
    爬虫的IP代理不生效怎么解决?

    爬虫的IP代理不生效怎么解决?我们使用IP代理的时候要考虑到IP代理池中的IP不一定都是有效的,如果出现错误,需要从这方面进入处理。比如切换IP个新的IP使用,并继续处理当前这个URL。如果

在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
HTTP代理IP爬虫
客服电话
13318873961