热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

爬虫入门(四)ajax网页的爬取

ajax网页的爬取看完1,2,3的教程其实呢一些简单结构的网站基本都能爬取了,然而在现在网页页面资源越来越丰富的趋势下,每次一刷新就把整个网页给你重新加载已经是out的做法了,而你可能也会

ajax网页的爬取

看完1,2,3的教程其实呢一些简单结构的网站基本都能爬取了,然而在现在网页页面资源越来越丰富的趋势下,每次一刷新就把整个网页给你重新加载已经是out的做法了,而你可能也会忍受不了它的加载速度,所以Ajax技术就诞生了,这是一种异步加载的技术,换而言之就是你看到的只是加载了一部分的页面,典型的就是如果壳网http://www.guokr.com/scientific/,你一直往下拉,页面就会显示更多的内容给你,而不是一次性的全加载进来

可我们的爬虫可不能帮你”手动向下拉”,那怎么办呢?这时候就要通过抓包来分析异步加载的网页的特征了

我们就以上面的果壳网为例子,这里我用的是火狐浏览器来抓包

环境 ubuntu 16.04 python3.6.1

我们套路一下,打开页面,打开检查元素开发者选项,然后刷新一下,在网络监视器里选择XHR(XMLHttpRequest),我们可以看到一个请求就来了,我们再往下拉,等到第二个页面加载,第二个请求就来了

1

我们点开两个请求看看参数

2

聪明的你一定发现规律了,可以看到offset参数相差了20,我们继续刷新下一个页面看看

果然下一个页面就是58,那么其实就相当于我们拿到这个页面的入口了

可是数据在哪里呢?

我们再到处翻翻看到响应这里,返回的是一个JSON文件,然后看看result,似乎是一个列表

3

点开一波

4

惊喜的发现我们想要的数据全都在这里了,那么就可以开始我们的爬取了

解析JSON文件我们有Python自带的JSON库,功能已经很齐全了,直接json.loads()一下就出来了,而且格式优美,还不用我们整理了~

这里我就直接存在数据库里了

#coding:utf-8
import requests
import json
from pymongo import MongoClient
import pymongo

url = 'http://www.guokr.com/scientific/'

client = MongoClient()
guoke = client['guoke']
guokeData = guoke['guokeData']

def dealData(url):
    web_data = requests.get(url)
    datas = json.loads(web_data.text)
    print(datas.keys())
    for data in datas['result']:
        guokeData.insert_one(data)

def run():
    urls = ['http://www.guokr.com/apis/minisite/article.json?retrieve_type=by_subject&limit=20&offset={}&_=1493885477869'.format(str(i)) for i in range(18,100,20) ]
    for url in urls:
        print(url)
        dealData(url)

if __name__ == '__main__':
    run()

最后感谢这位博主的指导~http://www.jianshu.com/p/6002ef3434fd


推荐阅读
  • Spring框架入门指南:专为新手打造的详细学习笔记
    Spring框架是Java Web开发中广泛应用的轻量级应用框架,以其卓越的功能和出色的性能赢得了广大开发者的青睐。本文为初学者提供了详尽的学习指南,涵盖基础概念、核心组件及实际应用案例,帮助新手快速掌握Spring框架的核心技术与实践技巧。 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 本课程详细介绍了如何使用Python Flask框架从零开始构建鱼书应用,涵盖高级编程技巧和实战项目。通过视频教学,学员将学习到Flask的高效用法,包括数据库事务处理和书籍交易模型的实现。特别感谢AI资源网提供的课程下载支持。 ... [详细]
  • 探索JavaScript倒计时功能的三种高效实现方法及代码示例 ... [详细]
  • 深入解析 Spring MVC 的核心原理与应用实践
    本文将详细探讨Spring MVC的核心原理及其实际应用,首先从配置web.xml文件入手,解析其在初始化过程中的关键作用,接着深入分析请求处理流程,包括控制器、视图解析器等组件的工作机制,并结合具体案例,展示如何高效利用Spring MVC进行开发,为读者提供全面的技术指导。 ... [详细]
  • 本文探讨了如何在 Google Sheets 中通过自定义函数实现 AJAX 调用。具体介绍了编写脚本的方法,以便在电子表格中发起 AJAX 请求,从而实现数据的动态获取与更新。这种方法不仅简化了数据处理流程,还提高了工作效率。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 本文详细解析了如何使用 jQuery 实现一个在浏览器地址栏运行的射击游戏。通过源代码分析,展示了关键的 JavaScript 技术和实现方法,并提供了在线演示链接供读者参考。此外,还介绍了如何在 Visual Studio Code 中进行开发和调试,为开发者提供了实用的技巧和建议。 ... [详细]
  • 本文首先对信息漏洞的基础知识进行了概述,重点介绍了几种常见的信息泄露途径。具体包括目录遍历、PHPINFO信息泄露以及备份文件的不当下载。其中,备份文件下载涉及网站源代码、`.bak`文件、Vim缓存文件和`DS_Store`文件等。目录遍历漏洞的详细分析为后续深入研究奠定了基础。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • Python网络爬虫入门:利用urllib库进行数据抓取
    Python网络爬虫入门:利用urllib库进行数据抓取在数据科学和Web开发领域,Python凭借其简洁高效的特性成为首选语言。本文主要介绍了如何在Windows环境下使用Python的urllib库进行基本的网络数据抓取。考虑到命令行操作的不便,作者选择了Jupyter Notebook作为开发环境,不仅简化了配置过程,还提供了直观的数据处理和可视化功能。通过实例演示,读者可以轻松掌握urllib的基本用法,为深入学习网络爬虫技术打下坚实基础。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 如何构建基于Spring MVC框架的Java Web应用项目
    在构建基于Spring MVC框架的Java Web应用项目时,首先应创建一个新的动态Web项目。接着,需将必要的JAR包导入至WebContent/WEB-INF/lib目录下,确保包括Spring核心库及相关依赖。如遇缺失的JAR包,可向社区求助或通过Maven等工具自动下载。正确配置后,即可开始搭建应用结构与功能模块。 ... [详细]
  • Django框架进阶教程:掌握Ajax请求的基础知识与应用技巧
    本教程深入探讨了Django框架中Ajax请求的核心概念与实用技巧,帮助开发者掌握异步数据交互的方法,提升Web应用的响应速度和用户体验。通过实例解析,详细介绍了如何在Django项目中高效实现Ajax请求,涵盖从基础配置到复杂场景的应用。 ... [详细]
author-avatar
李波2602884584
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有