关于使用scrapy框架编写爬虫以及Ajax动态加载问题、反爬问题解决方案 (2)

此处的douban_movie_top250即为我们刚刚写的爬虫的name, -o douban.csvscrapy提供的功能,将item输出为csv格式的文件,存储到douban.csv中。

得到数据:

 

关于使用scrapy框架编写爬虫以及Ajax动态加载问题、反爬问题解决方案

 

 

到此我们已经可以解决一般普通网站的抓取任务,普通网站是指网页源码之中包含了所有我们想要抓取的内容,但是有的时候一些网站采用了Ajax异步加载的方法,导致以上介绍的方法无法使用。

 

2、关于抓取Ajax异步加载的网站

 

Ajax是什么:

 

AJAX即“Asynchronous Javascript And XML”(异步JavaScriptXML),是指一种创建交互式网页应用的网页开发技术。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

通过Ajax异步加载的网页内容在网页源码中是没有的,也就是之前介绍的方法中下载到的response中是解析不到我们想要的内容的。

 

如何抓取AJAX异步加载页面

 

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

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

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

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

 

异步加载网站抓取示例

使用豆瓣电影分类排行榜作为抓取示例,链接为

https://movie.douban.com/typerank?type_name=%E5%8A%A8%E4%BD%9C&type=5&interval_id=100:90&action=

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

 

关于使用scrapy框架编写爬虫以及Ajax动态加载问题、反爬问题解决方案

关于使用scrapy框架编写爬虫以及Ajax动态加载问题、反爬问题解决方案

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfsfw.html