起因:
之前做JAVA的时候,我一般都拿Jsoup来写爬虫,后来做Python的时候,一般是UrlLib Request+BS4 或者 Selenium来做爬虫,用这种方法,可以很轻松的抓到数据【但数据比较局限在简单的形式,比如 不能适应AJAX,不能有JS操作(Selenium等仿真模拟器的方法是可以做的)】
就这样通过简单的爬虫,我抓了一年又一年的数据,直到前段时间要抓海量JD数据的时候,头疼了,通过Request+BS4效率实在有点低,抓100万文本数据,1G左右的内容,耗时竟然达到50+小时,当然可能也和频繁的读写有关系。于是想要学习一下,多线程爬虫和分布式爬虫。之前在做C#开发桌面程序的时候,经常写多线程,因为毕竟子线程没办法控制UI界面刷新,这次来试试Python的多线程爬虫。
这是之前写的单线程爬虫的抓取。
一个爬虫的简单框架
一个简单的爬虫框架,主要就是处理网络请求,Scrapy
使用的是Twisted(一个事件驱动网络框架,以非阻塞的方式对网络I/O进行异步处理),这里不