爬虫是什么?
网络爬虫(又称网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一个按照一定规则,自动的抓取万维网信息的程序或者脚本。
学习python爬虫,需要学习并掌握以下几点:
Python基础知识
Python中urllib和urllib2库的用法
Python正则表达式
Python爬虫框架Scrapy
Python爬虫更高级的功能
Python urllib和urllib2库的用法
urllib和urllib2库是学习python爬虫最基本的库,利用这个库我们可以得到网页的内容,并对内容用正则表达式提取分析,得到我们想要的结果。
Python正则表达式
Python正则表达式是一种用来匹配字符串的强有力的武器,它的设计思想是用一种描述性的语言来给字符串来定义一个规则,凡是符合规则的字符串,我们就可以认为它“匹配”了,否则,该字符串就是不合法的。
爬虫框架Scrapy
如果已经基本的掌握了爬虫只是,那么就学习一个python框架吧,我选择的框架是Scrapy框架。下面我们看看官方对Scrapy做出的介绍:
HTML,XML源数据选择及提取的内置支持
提供了一系列在spider之间共享的可复用的过滤器(Item Loaders),对智能处理爬取数据提供了内置支持
提供media pipeline,可以自动下载爬取到的数据中的图片(或者其他资源)。
高扩展性,您可以通过使用signals,设计好的API(中间件,extensions,pipelines)来定制实现您的功能。
内置的中间件及扩展为下列功能提供了支持:
Cookies and session处理
HTTP压缩
HTTP认证
HTTP缓存
User-agent模拟
Robots.txt
爬取深度限制
针对非英语语系中不标准或者错误的编码声明,提供了自动检测以及健壮的编码支持。支持根据模板生成爬虫。在加速爬虫创建的同时,保持在大型项目中的代码更为一致。详细内容请参阅genspider命令。
针对多爬虫下性能评估、失败检测,提供了可扩展的状态收集工具。
提供了交互式shell终端,为您测试XPath表达式,编写和调试爬虫提供了极大的方便
提供System service,简化了生产环境的部署及运行。
内置Web service,使您可以监视及控制您的机器
内置Telnet终端,通过在Scrapy进程中钩入python终端,使您可以查看并且调试爬虫
Logging为您在爬取过程中捕捉错误提供了方便
支持Sitemaps爬取
具有缓存的DNS解析器
官方文档:http://doc.scrapy.org/en/latest/
浏览网页的过程
在用户浏览网页的过程中,eg. http://image.baidu.com/ 我们会看到几张图片以及百度搜索框,这个过程其实就是用户输入网址之后,经过DNS服务器,找到服务器主机,向服务器发送一个请求,经过服务器解析之后,发送给用户的浏览器HTML、JS、CSS等文件,浏览器解析出来,用户便可以看到各种图片了。
因此,用户看到的网页实质是由HTML代码构成的,爬虫爬出来的便是这些代码,通过分析和过滤这些HTML代码,实现对图片、文字等资源的获取。
URL的含义
URL,即统一资源定位符,也就是平常所说的网址,统一资源定位符是对可以从互联网上得到资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
URL的格式由三部分组成:
协议(或称服务方式)
存有该资源额主机IP地址(有时候包括端口号)
主机资源的具体地址,如目录和文件名等。
爬虫爬取数据必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据,准确理解它的含义对爬虫的进一步学习有莫大的帮助。
环境的配置
在Windows下我用的是PyCharm