Scrapy学习笔记

所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这种说法不够专业,更专业的描述就是,抓取特定网站网页的HTML数据。不过由于一个网站的网页很多,而我们又不可能事先知道所有网页的URL地址,所以,如何保证我们抓取到了网站的所有HTML页面就是一个有待考究的问题了。一般的方法是,定义一个入口页面,然后一般一个页面会有其他页面的URL,于是从当前页面获取到这些URL加入到爬虫的抓取队列中,然后进入到新页面后再递归的进行上述的操作,其实说来就跟深度遍历或广度遍历一样。

Scrapy是一个基于Twisted,纯Python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便~

Scrapy 使用 Twisted这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。整体架构如下图所示:

绿线是数据流向,首先从初始URL 开始,Scheduler 会将其交给 Downloader 进行下载,下载之后会交给 Spider 进行分析,Spider分析出来的结果有两种:一种是需要进一步抓取的链接,例如之前分析的“下一页”的链接,这些东西会被传回 Scheduler ;另一种是需要保存的数据,它们则被送到Item Pipeline 那里,那是对数据进行后期处理(详细分析、过滤、存储等)的地方。另外,在数据流动的通道里还可以安装各种中间件,进行必要的处理。

1.创建一个Scrapy项目:scrapy startproject 项目名

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

T:\>scrapy startproject tutorial
T:\>

这个命令会在当前目录下创建一个新目录tutorial,它的结构如下:

T:\tutorial>tree /f
Folder PATH listing
Volume serial number is 0006EFCF C86A:7C52
T:.
│  scrapy.cfg
│
└─tutorial
    │  items.py
    │  pipelines.py
    │  settings.py
    │  __init__.py
    │
    └─spiders
            __init__.py

这些文件主要是:

  • scrapy.cfg: 项目配置文件
  • tutorial/: 项目python模块, 呆会代码将从这里导入
  • tutorial/items.py: 项目items文件
  • tutorial/pipelines.py: 项目管道文件
  • tutorial/settings.py: 项目配置文件
  • tutorial/spiders: 放置spider的目录

定义Item

Items是将要装载抓取的数据的容器,它工作方式像python里面的字典,但它提供更多的保护,比如对未定义的字段填充以防止拼写错误。

它通过创建一个scrapy.item.Item类来声明,定义它的属性为scrpy.item.Field对象,就像是一个对象关系映射(ORM).

在items.py文件中,定义一个scrapy.item.Item类,在其中定义我们想要从抓取到的网页数据中解析获取的数据的Field(scrpy.item.Field类型)

from scrapy.item import Item, Field
class DmozItem(Item):
    title = Field()
    link = Field()
    desc = Field()定义Spider

他们定义了用于下载的URL的初步列表,如何跟踪链接,以及如何来解析这些网页的内容用于提取items。

要建立一个Spider,你必须为scrapy.spider.BaseSpider创建一个子类,并确定三个主要的、强制的属性:

  • name:爬虫的识别名,它必须是唯一的,在不同的爬虫中你必须定义不同的名字.
  • start_urls:爬虫开始爬的一个URL列表。爬虫从这里开始抓取数据,所以,第一次下载的数据将会从这些URLS开始。其他子URL将会从这些起始URL中继承性生成。
  • parse():爬虫的方法,调用时候传入从每一个URL传回的Response对象作为参数,response将会是parse方法的唯一的一个参数,

这个方法负责解析返回的数据、匹配抓取的数据(解析为item)并跟踪更多的URL。

Scrapy学习笔记

时间: 2024-08-15 06:19:51

Scrapy学习笔记的相关文章

scrapy学习笔记(1)

初探scrapy,发现很多入门教程对应的网址都失效或者改变布局了,于是自己摸索做一个笔记. 环境是win10 python3.6(anaconda). 安装 pip install scrapy 这次先尝试爬取美剧天堂(http://www.meijutt.com/) 目标页面: 原文地址:https://www.cnblogs.com/xcx2/p/8454589.html

python scrapy学习笔记(二)

使用scrapy批量抓取,参考http://python.jobbole.com/87155 一.创建项目 # scrapy startproject comics 创建完成后的目录结构 . ├── comics │   ├── __init__.py │   ├── items.py │   ├── middlewares.py │   ├── pipelines.py │   ├── settings.py │   └── spiders │       └── __init__.py └─

python scrapy学习笔记

scrapy是python最有名的爬虫框架之一,可以很方便的进行web抓取,并且提供了很强的定制型. 一.安装scrapy # pip install scrapy 二.基本使用 1.初始化scrapy项目 # scrapy startproject myscrapy 初始化完成后的目录结构 # tree . ├── myscrapy │   ├── __init__.py │   ├── items.py                      # 设置数据存储模板,用于结构化数据 │   

Python爬虫框架Scrapy 学习笔记 10.2 -------【实战】 抓取天猫某网店所有宝贝详情

第二部分 抽取起始页中进入宝贝详情页面的链接 创建项目,并生成spider模板,这里使用crawlspider. 2. 在中scrapy shell中测试选取链接要使用的正则表达式. 首先使用firefox和firebug查看源码,定位到要链接 然后在shell中打开网页: scrapy shell  http://shanhuijj.tmall.com/search.htm?spm=a1z10.3-b.w4011-3112923129.1.KjGkS2 确定正则表达式为:http://deta

Python爬虫框架Scrapy 学习笔记 8----Spider

什么是爬虫? 从逻辑角度讲,爬虫对应一个树.树枝是网页,树叶是感兴趣的信息. 当我们从一个URL出发查找感兴趣的信息时,当前URL返回的内容可能包含我们感兴趣的信息,也可能包含另一个可能包含我们感兴趣的信息的URL.一个爬虫对应一次信息搜索,信息搜索过程会建立起一棵树. scrapy.Spider这个类提供了接口,允许我们设计整个信息搜索的流程. 给spider传递运行时所需的参数.比如URL ?号后面的参数信息.这些信息可以选择使用crawl -a 命令传递 2. Spider循环 对spid

Python爬虫框架Scrapy 学习笔记 7------- scrapy.Item源码剖析

在前面的example中,我们知道定义一个Item类很简单,只要继承scrapy.Item,然后添加几个类型为scrapy.Field的对象作为类属性,就像下面这样 import scrapy class Product(scrapy.Item):     name = scrapy.Field()     price = scrapy.Field()     stock = scrapy.Field()     last_updated = scrapy.Field(serializer=st

Python爬虫框架Scrapy 学习笔记 6 ------- 基本命令

1. 有些scrapy命令,只有在scrapy project根目录下才available,比如crawl命令 2 . scrapy genspider taobao http://detail.tmall.com/item.htm?id=12577759834 自动在spider目录下生成taobao.py # -*- coding: utf-8 -*- import scrapy class TaobaoSpider(scrapy.Spider):     name = "taobao&qu

Python爬虫框架Scrapy 学习笔记 10.3 -------【实战】 抓取天猫某网店所有宝贝详情

第三部分 替换默认下载器,使用selenium下载页面 对详情页稍加分析就可以得出:我们感兴趣的大部分信息都是由javascript动态生成的,因此需要先在浏览器中执行javascript代码,再从最终的页面上抓取信息(当然也有别的解决方案). scrapy 本身提供了 Middleware机制.利用Dowloader Middleware可以改变默认的request对象和reponse对象,甚至替换默认的下载器.(可以对比JavaEE中的Filter理解Middleware) scrapy 架

Python爬虫框架Scrapy 学习笔记 1 ----- 安装

一. 安装 平台 windows 7 1. 安装 python2.7 32 位 2. 安装 Python2.7-twisted-14.0.2  下载msi安装包双击安装即可 3. 安装 python2.7对应的pip 4. 配置好python的环境变量后,打开cmd运行 : pip install scrapy pip默认为我安装了 Scrapy 0.24.4 二.相关文档下载 官方提供了PDF格式的文档,点击下载即可.文档只有205页.