Scrapy笔记05- Item详解
Item是保存结构数据的地方,Scrapy可以将解析结果以字典形式返回,但是Python中字典缺少结构,在大型爬虫系统中很不方便。
Item提供了类字典的API,并且可以很方便的声明字段,很多Scrapy组件可以利用Item的其他信息。
Item是保存结构数据的地方,Scrapy可以将解析结果以字典形式返回,但是Python中字典缺少结构,在大型爬虫系统中很不方便。
Item提供了类字典的API,并且可以很方便的声明字段,很多Scrapy组件可以利用Item的其他信息。
在你爬取网页的时候,最普遍的事情就是在页面源码中提取需要的数据,我们有几个库可以帮你完成这个任务:
而Scrapy实现了自己的数据提取机制,它们被称为选择器,通过XPath 或CSS表达式在HTML文档中来选择特定的部分
Scrapy选择器构建在lxml基础之上,所以可以保证速度和准确性。
本章我们来详细讲解下选择器的工作原理,还有它们极其简单和相似的API,比lxml的API少多了,因为lxml可以用于很多其他领域。
完整的API请查看Selector参考
Spider是爬虫框架的核心,爬取流程如下:
start_urls
指定,调用start_requests()
产生Request
对象,然后注册parse
方法作为回调Item
对象,Request
对象或它们的迭代对象。Request
对象还会包含回调函数,之后Scrapy下载完后会被这里注册的回调函数处理。尽管这个流程适合于所有的蜘蛛,但是Scrapy里面为不同的使用目的实现了一些常见的Spider。下面我们把它们列出来。
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘, 信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取(更确切来说,网络抓取)所设计的, 也可以应用在获取API所返回的数据(比如Web Services)或者通用的网络爬虫。
Scrapy也能帮你实现高阶的爬虫框架,比如爬取时的网站认证、内容的分析处理、重复抓取、分布式爬取等等很复杂的事。
前面一篇介绍了SQLAlchemy的入门,这里我讲讲它的进阶用法,其实主要是通过它来轻松实现一些复杂查询。
SQLAlchemy中的映射关系有四种,分别是一对多、多对一、一对一、多对多。接下来我将详细说明怎样去定义这四种关系, 然后再演示怎样通过这四种关系完成复杂的查询和更新。
SQLAlchemy是Python世界中最广泛使用的ORM工具之一,它采用了类似于Java里Hibernate的数据映射模型,
而不是其他ORM框架采用的Active Record
模型。
SQLAlchemy分为两个部分,一个是最常用的ORM对象映射,另一个是核心的SQL expression
。
第一个很好理解,纯粹的ORM,后面这个不是ORM,而是DBAPI的封装,通过一些sql表达式来避免了直接写sql。
使用SQLAlchemy
则可以分为三种方式。
最今天我又折腾了我的博客,将它从octopress迁移到hexo上来。之前还专门写了一篇怎样利用octopress搭建博客的文章, 最近试用了一下hexo,毫不犹豫的迁移过来了,实在是忍受不了octopress的速度,还有稳定性,经常莫名其妙的出错。
hexo是一个台湾人做的基于Node.js的静态博客程序,优势是生成静态文件的速度非常快,支持markdown, 我最终选定它的原因是它速度快而且不容易出错,并且可以一键部署到github或者其它静态服务器上去。折腾了一天总算搞定。
一般将coroutine称之为协程(或微线程,也有称纤程的)。 我在python并发编程那篇文章已经详细讲解了进程Process和线程Thread的用法, 很早就想再写一篇专门讲解coroutine以及相关的优秀库gevent。
目前常见的coroutine应用都是网络程序中,所以我们先来看看各种不同的网络框架模型, 然后再介绍coroutine就会比较理解了。
Web应用开发可以说是目前软件开发中最重要的部分。Web开发也经历了好几个阶段:静态Web页面、CGI、ASP/JSP/PHP、MVC。
目前,Web开发技术仍在快速发展中,异步开发、新的MVVM前端技术层出不穷。
Python的诞生历史比Web还要早,由于Python是一种解释型的脚本语言,开发效率高,所以非常适合用来做Web开发。
Python有上百种Web开发框架,有很多成熟的模板技术,选择Python开发Web应用,不但开发效率高,而且运行速度快。