Python小小白可爱的爬虫爬虫

爬虫|崔神的干货总结

2019-01-28  本文已影响1人  5a41eb2ceec6

来源:这可能是你见过的最全的网络爬虫干货总结!


日拱一卒|数据挖掘005

崔神从五个方面介绍了利用 Python 进行网络爬虫开发的相关知识点和技巧:

  1. 抓取
  2. 解析
  3. 存储
  4. 反爬
  5. 加速
目录

一、爬取

爬取的目标可以大致分为两类:网页、APP

对于网页,可以分为两种类别,即

对于APP,可以分为四类,即

(一)网页爬取

网页爬取

服务端渲染

对于服务端渲染,用一些基本的HTTP请求库就可以实现爬取,如 urllib、urllib3、pycurl、hyper、requests、grab 等框架,其中应用最多的可能就是 requests 了。


服务端渲染

客户端渲染

对于客户端渲染,有四种处理方法:

(二)APP爬取

对于APP的爬取分为四种情况:

APP爬取1
APP爬取2
APP爬取3

二、解析

对于 HTML 类型的页面来说,常用的解析方法其实无非那么几种,正则、XPath、CSS Selector,另外对于某些接口,常见的可能就是 JSON、XML 类型,使用对应的库进行处理即可。


解析

这些规则和解析方法其实写起来是很繁琐的,如果我们要爬上万个网站,如果每个网站都去写对应的规则,那么不就太累了吗?所以智能解析便是一个需求。智能解析意思就是说,如果能提供一个页面,算法可以自动来提取页面的标题、正文、日期等内容,同时把无用的信息给刨除。

智能解析

三、存储

存储,即选用合适的存储媒介来存储爬取到的结果


存储1 存储2

推荐崔神的公众号 进击的Coder

进击的Coder

四、反爬虫

爬虫现在已经越来越难了,非常多的网站已经添加了各种反爬措施,在这里可以分为非浏览器检测、封 IP、验证码、封账号、字体反爬等。

反爬虫

(一)防封IP

防封IP

(二)验证码

验证码分为非常多种,如普通图形验证码、算术题验证码、滑动验证码、点触验证码、手机验证码、扫二维码等。

验证码1 验证码2 验证码3

(三)防封号

一些网站需要登录才能爬取,但是一个账号登录之后请求过于频繁会被封号,为了避免封号,可以采取如下措施:

防封号

五、加速

当爬取的数据量非常大时,如何高效快速地进行数据抓取是关键。常见的措施有多线程、多进程、异步、分布式、细节优化等。


加速

(一)多线程、多进程

爬虫是网络请求密集型任务,所以使用多进程和多线程可以大大提高抓取效率,如使用 threading、multiprocessing 等。

(二)异步

将爬取过程改成非阻塞形式,当有响应式再进行处理,否则在等待时间内可以运行其他任务,如使用 asyncio、aiohttp、Tornado、Twisted、gevent、grequests、pyppeteer、pyspider、Scrapy 等。

线程和异步

(三)分布式

分布式的关键在于共享爬取队列,可以使用 celery、huey、rq、rabbitmq、kafka 等来实现任务队列的对接,也可以使用现成的框架 pyspider、Scrapy-Redis、Scrapy-Cluster 等。

分布式

(四) 优化

优化

(五)架构

架构

推荐 进击的Coder 崔神公号

上一篇 下一篇

猜你喜欢

热点阅读