Python 提供了一些很不错的 页爬虫工具框架,既能爬取数据,又能获取和清洗数据,常用的模块库:
Requests 人性化的 络模块
Requests 是 Python 官方推荐的 HTTP 络编程模块库。Python 标准库中的 Urllib2 模块虽然也可以完成大多数 HTTP 络编程功能,但是它的 API 接口不友好,非常复杂,需要进行大量的工作,甚至包括各种方法覆盖来完成最简单的任务。
尽管可以通过标准库中的 Urllib2 模块来操作 页表单,但有些时候更友好的代码可以让工作更轻松。
Requests 模块库在处理复杂 HTTP 命令、Cookies 等方面更为高效,Requests 模块库的设计师 Kenneth Reitz 对 Python 核心工具的评价是:
Python 标准 Urllib2 模块提供了用户所需要的绝大多数 HTTP 功能,但是其 API 却很差。它的创建是用于不同时间及不同 页的,即使执行一个简单的任务也需要大量的工作(甚至重写方法等)。
事情并不应该如此,至少在 Python 中不应如此。
Reuqests 模块库简洁好用,其宣传口 就是:让 HTTP 服务人类。
Requests 模块库允许用户发送人性化的 HTTP 请求命令,无需手动为 URL 添加查询字符串,也不需要对 POST 数据进行表单编码。Keep-alive 和 HTTP 连接池的功能是 100%自动化的,由 Requests 模块库内部的 Urllib3 子模块完成。
下面以常见的 站模拟登录案例来说明 Requests 模块库的基本功能,代码很简单,只有几行:
re = requests.session()
data = {“user”:”用户名”,”passdw”:”密码”}
res = re.post(“http://www.xxx.com/index.phption=login”,data)
htm = re.get(“http://www.xxx.com/archives/101”)
只用 4 行代码即可完成全部的模拟登录工作。
Scrapy 页爬虫框架
页爬虫是在 页中抓取数据的程序,使用它能够抓取特定 页的 HTML 数据。虽然可以利用模块库开发一个爬虫程序,但是使用框架可以大大提高效率,缩短开发时间。Scrapy 是一个使用 Python 编写的、轻量级的 页爬虫框架,简单轻巧,并且使用起来非常的方便。
从严格意义上来说,Scrapy 已经不是一个 络模块库,而是一套完整的 页爬虫框架,或者说是一套 站下载系统,它可以把一些中小型 站完整地抓取下来。
Scrapy 是使用 Python 语言开发的一个快速、高层次的 页抓取框架,用于抓取 Web 站点并从页面中提取结构化的数据。Scrapy 用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy 吸引人的地方在于它是一个框架,任何人都可以根据需求方便地修改。它也提供了多种类型爬虫的基类,如 BaseSpider、Sitemap 等,最新版本又提供了 Web 2.0 爬虫的支持。
如图 1 所示是 Scrapy 的内部结构图,如图 2 所示是 Scrapy 站首页截图。
Beautiful Soup 4
Beautiful Soup 的意思是“可口的汤羹”、“甲鱼汤”,它是一套 Python 模块库,用于 页的文本分析、数据清洗。
re 正则表达式
许多程序设计语言都支持利用正则表达式进行字符串操作,正则表达式的概念最初是由 UNIX 中的工具软件(例如 sed 和 grep)普及的。
正则表达式原本并不是 Python 语言标准库,Python 语言自 1.5 版本起增加了 re 模块,它提供 Perl 风格的正则表达式模式,re 模块使 Python 语言拥有全部的正则表达式功能。
正则表达式是用于处理字符串的强大工具,拥有自己独特的语法及一个独立的处理引擎,效率上可能不及字符串自带的方法,但功能十分强大。
如果想了解更多关于正则表达式的内容,re 模块的 Python 官方文档是一个非常好的资源。
摘自一本我正在翻的书。
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树 络爬虫urllib211387 人正在系统学习中 相关资源:开源的爬虫软件Heritrix3.1.0_开源爬虫-Java工具类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!