instagram动态网页图片内容爬取(一)

学习了python两个多月,前期的python基础和python爬虫入门都是在中国大学mooc平台上学习的,都是北理嵩天老师开设的两门课程,很适合像我一样的小白初学者学习。

python语言程序设计:http://www.icourse163.org/learn/BIT-268001?tid=1002788003

python网络爬虫与信息提取:http://www.icourse163.org/learn/BIT-1001870001?tid=1002781006

 

后续还在慕课网上进行了爬虫入门课程的学习: http://www.imooc.com/learn/563

该课程主要采用面向对象的方式,进行了爬虫程序的开发,老师讲的很细很好,推荐。这个课程不仅让我对爬虫相关知识进行拓展和巩固,同时也知道面对对象的编程方式在实际程序中的运用(不再是animal,dog,cat的例子了)。

 

废话不多说了直接进入正题:在后续探索爬虫过程中,我发现了一个问题,有些网页的源代码打开后没有我们需要爬取的内容(或者不全),后续内容均为动态加载的,源代码没有变,比如这次我要爬取的ins页面上用户上传的照片(由于不可明说的原因ins需要才能访问)。

 

第一步:爬取基本网页图片内容(以NASA ins主页为例)

F12查看源代码发现,需要爬取的图片信息在这个“window._sharedData =”下面,还非常友好的以json格式保存:

instagram动态网页图片内容爬取(一)_第1张图片其中,本次爬取任务最重要的图URL地址在”display”下面:


后续就简单了写程序爬取

instagram动态网页图片内容爬取(一)_第2张图片

首页及我程序中base_url的相关内容获取。获取的内容均是json格式,根据具体需要爬取其中的内容即可。我这里主要就爬取了url、点赞数、评论数。

 

OK,第一步基本页面上面的图片信息就爬取完毕。当我们下拉网页的时候发现,有新的图片加载出来,而这些内容在之前我们爬取的“window._sharedData =”里面并没有,这怎么搞呢?

第二步:爬取后续加载图片内容

还是F12大法,这次就要查看一下Network里面到底每次给我们响应的什么内容:

instagram动态网页图片内容爬取(一)_第3张图片

发现红框内容最初只有我们能看见的12张图片内容:

instagram动态网页图片内容爬取(一)_第4张图片

当下拉的时候,就发现里面多出了新加载的12张图片:

instagram动态网页图片内容爬取(一)_第5张图片

主要关注的红框这一条url,打开这条url:

https://www.instagram.com/graphql/query/?query_hash=76d9c5f9c2d88aa251ece9ea61fdc570&variables=%7B%22id%22%3A%22528817151%22%2C%22first%22%3A12%2C%22after%22%3A%22AQCxI0PXrVr_77JeVWMLDL2Ows0hcYey2eXQWhbKFQgcMvVw3CAKKmy_AhOzaVIuo9jzBQWinakpJ8e-WQz1WO1Qage7wrGs9Dt95b9MGGP56g%22%7D

发现里面就是需要的新加载图片的信息:

instagram动态网页图片内容爬取(一)_第6张图片

同样很友好是json格式,那还等什么直接下程序爬取内容吧。

我之前爬取后用html 格式输出的部分内容:

instagram动态网页图片内容爬取(一)_第7张图片

基本上爬取ins上面的照片内容就完成,不过这只是做到爬取ins的第一步,特别是后续加载的网页每次都要通过F12查看url不是很麻烦,后面就是通过base_url直接判断获取后续url进行爬取。

 

源代码:https://github.com/fangfucdwin/ins-cwal

面向对象:https://github.com/fangfucdwin/ins_craw2

 

本人第一篇博文,望各种网友觉得有用的点个赞,各种大神多指点指点。


你可能感兴趣的:(新手上路)