Python爬虫好写吗?

Python013

Python爬虫好写吗?,第1张

python爬虫不简单的,基础爬虫:

(1)基础库:urllib模块/requests第三方模块

首先爬虫就是要从网页上把我们需要的信息抓取下来的,那么我们就要学习urllib/requests模块,这两种模块是负责爬取网页的。这里大家觉得哪一种用的习惯就用哪一种,选择一种精通就好了。我推荐读者使用使用requests模块,因为这一种简便很多,容易操作、容易理解,所以requests被称为“人性化模块”。

(2)多进程、多线程、协程和分布式进程:

为什么要学着四个知识呢?假如你要爬取200万条的数据,使用一般的单进程或者单线程的话,你爬取下载这些数据,也许要一个星期或是更久。试问这是你想要看到的结果吗?显然单进程和单线程不要满足我们追求的高效率,太浪费时间了。只要设置好多进程和多线程,爬取数据的速度可以提高10倍甚至更高的效率。

(3)网页解析提取库:xpath/BeautifulSoup4/正则表达式

通过前面的(1)和(2)爬取下来的是网页源代码,这里有很多并不是我们想要的信息,所以需要将没用的信息过滤掉,留下对我们有价值的信息。这里有三种解析器,三种在不同的场景各有特色也各有不足,总的来说,学会这三种灵活运用会很方便的。推荐理解能力不是很强的朋友或是刚入门爬虫的朋友,学习BeautifulSoup4是很容易掌握并能够快速应用实战的,功能也非常强大。

(4)反屏蔽:请求头/代理服务器/cookie

在爬取网页的时候有时会失败,因为别人网站设置了反爬虫措施了,这个时候就需要我们去伪装自己的行为,让对方网站察觉不到我们就是爬虫方。请求头设置,主要是模拟成浏览器的行为;IP被屏蔽了,就需要使用代理服务器来破解;而cookie是模拟成登录的行为进入网站。

(5)异常:超时处理/异常处理,这里不做介绍了,自己去了解一下。

(6)数据储存库:文件系统储存/MySQL/MongoDB

数据的储存大概就这三种方式了,文件系统储存是运用了python文件操作来执行的;而MySQL要使用到数据库创建表格来储存数据;MongoDB在爬虫里是非常好的储存方式,分布式爬虫就是运用了MongoDB来储存的。各有特色,看自己需要哪种,在灵活运用。

(7)动态网页抓取:Ajax/PhantomJS/Selenium这三个知识点

(8)抓包:APP抓包/API爬虫

(9)模拟登陆的 爬虫

1、Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。它是很强大的爬虫框架,可以满足简单的页面爬取,比如可以明确获知url pattern的情况。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。但是对于稍微复杂一点的页面,如weibo的页面信息,这个框架就满足不了需求。

2、pyspider

是一个用python实现的功能强大的网络爬虫系统,能在浏览器界面上进行脚本的编写,功能的调度和爬取结果的实时查看,后端使用常用的数据库进行爬取结果的存储,还能定时设置任务与任务优先级等。

3、Crawley可以高速爬取对应网站的内容,支持关系和非关系数据库,数据可以导出为JSON、XML等。

4、Portia是一个开源可视化爬虫工具,可让使用者在不需要任何编程知识的情况下爬取网站!简单地注释自己感兴趣的页面,Portia将创建一个蜘蛛来从类似的页面提取数据。简单来讲,它是基于scrapy内核可视化爬取内容,不需要任何开发专业知识动态匹配相同模板的内容。

5、Grab是一个用于构建Web刮板的Python框架。借助Grab,您可以构建各种复杂的网页抓取工具,从简单的5行脚本到处理数百万个网页的复杂异步网站抓取工具。Grab提供一个API用于执行网络请求和处理接收到的内容,例如与HTML文档的DOM树进行交互。

现在之所以有这么多的小伙伴热衷于爬虫技术,无外乎是因为爬虫可以帮我们做很多事情,比如搜索引擎、采集数据、广告过滤等,以Python为例,Python爬虫可以用于数据分析,在数据抓取方面发挥巨大的作用。

但是这并不意味着单纯掌握一门Python语言,就对爬虫技术触类旁通,要学习的知识和规范还有喜很多,包括但不仅限于HTML 知识、HTTP/HTTPS 协议的基本知识、正则表达式、数据库知识,常用抓包工具的使用、爬虫框架的使用等。而且涉及到大规模爬虫,还需要了解分布式的概念、消息队列、常用的数据结构和算法、缓存,甚至还包括机器学习的应用,大规模的系统背后都是靠很多技术来支撑的。

零基础如何学爬虫技术?对于迷茫的初学者来说,爬虫技术起步学习阶段,最重要的就是明确学习路径,找准学习方法,唯有如此,在良好的学习习惯督促下,后期的系统学习才会事半功倍,游刃有余。

用Python写爬虫,首先需要会Python,把基础语法搞懂,知道怎么使用函数、类和常用的数据结构如list、dict中的常用方法就算基本入门。作为入门爬虫来说,需要了解 HTTP协议的基本原理,虽然 HTTP 规范用一本书都写不完,但深入的内容可以放以后慢慢去看,理论与实践相结合后期学习才会越来越轻松。关于爬虫学习的具体步骤,我大概罗列了以下几大部分,大家可以参考:

网络爬虫基础知识:

爬虫的定义

爬虫的作用

Http协议

基本抓包工具(Fiddler)使用

Python模块实现爬虫:

urllib3、requests、lxml、bs4 模块大体作用讲解

使用requests模块 get 方式获取静态页面数据

使用requests模块 post 方式获取静态页面数据

使用requests模块获取 ajax 动态页面数据

使用requests模块模拟登录网站

使用Tesseract进行验证码识别

Scrapy框架与Scrapy-Redis:

Scrapy 爬虫框架大体说明

Scrapy spider 类

Scrapy item 及 pipeline

Scrapy CrawlSpider 类

通过Scrapy-Redis 实现分布式爬虫

借助自动化测试工具和浏览器爬取数据:

Selenium + PhantomJS 说明及简单实例

Selenium + PhantomJS 实现网站登录

Selenium + PhantomJS 实现动态页面数据爬取

爬虫项目实战:

分布式爬虫+ Elasticsearch 打造搜索引擎