爬虫入门(四) ajax网页的爬取
来源:互联网 发布:cheat engine源码 编辑:程序博客网 时间:2024/06/03 21:31
ajax网页的爬取
看完1,2,3的教程其实呢一些简单结构的网站基本都能爬取了,然而在现在网页页面资源越来越丰富的趋势下,每次一刷新就把整个网页给你重新加载已经是out的做法了,而你可能也会忍受不了它的加载速度,所以Ajax技术就诞生了,这是一种异步加载的技术,换而言之就是你看到的只是加载了一部分的页面,典型的就是如果壳网http://www.guokr.com/scientific/,你一直往下拉,页面就会显示更多的内容给你,而不是一次性的全加载进来
可我们的爬虫可不能帮你”手动向下拉”,那怎么办呢?这时候就要通过抓包来分析异步加载的网页的特征了
我们就以上面的果壳网为例子,这里我用的是火狐浏览器来抓包
环境 ubuntu 16.04 python3.6.1
我们套路一下,打开页面,打开检查元素开发者选项,然后刷新一下,在网络监视器里选择XHR(XMLHttpRequest),我们可以看到一个请求就来了,我们再往下拉,等到第二个页面加载,第二个请求就来了
我们点开两个请求看看参数
聪明的你一定发现规律了,可以看到offset参数相差了20,我们继续刷新下一个页面看看
果然下一个页面就是58,那么其实就相当于我们拿到这个页面的入口了
可是数据在哪里呢?
我们再到处翻翻看到响应这里,返回的是一个JSON文件,然后看看result,似乎是一个列表
点开一波
惊喜的发现我们想要的数据全都在这里了,那么就可以开始我们的爬取了
解析JSON文件我们有Python自带的JSON库,功能已经很齐全了,直接json.loads()一下就出来了,而且格式优美,还不用我们整理了~
这里我就直接存在数据库里了
#coding:utf-8import requestsimport jsonfrom pymongo import MongoClientimport pymongourl = '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
- 爬虫入门(四) ajax网页的爬取
- 编写自动爬取网页的爬虫
- python爬虫入门篇------爬取网页源代码
- 爬取Ajax网页
- Python3爬虫之四简单爬虫架构【爬取百度百科python词条网页】
- jsoup爬虫爬取网页
- 爬虫爬虫学习: 爬取网页图片
- 爬虫爬取ajax内容
- 一个简单的网络爬虫---爬取网页中的图片
- [python爬虫]如何爬取特定网页的图片
- 定向爬虫:动态加载网页的爬取
- 爬虫-爬取代理ip网页里的ip
- 爬虫实战2—动态网页的爬取
- 爬虫实例:爬取一个网页上的图片地址
- Python爬虫---爬取静态网页的图片
- 简单的实现爬虫爬取网页文本和图片
- 网络爬虫之Scrapy实战四:爬取网页下载图片
- Python3网络爬虫:Scrapy入门实战之爬取动态网页图片
- Java IO文件读写
- code[vs] 1010过河卒(棋盘型dp)
- 在 Linux 虚拟机中手动安装或升级 VMware Tools以及Searching for a valid kernel header path... The path "" is not val
- 416. Partition Equal Subset Sum
- 在茫茫人海中找到一位大神,和蔼亲切型,你确定不来看看!
- 爬虫入门(四) ajax网页的爬取
- C语言中 -> 是什么意思?
- SAP HANA CREATE TABLE
- Java多线程/并发20、Future实现类:FutureTask
- POJ
- KMP
- mysq免安装配置与卸载
- 蓝桥杯 算法训练 操作格子 JAVA
- Python——文件IO