scrapy基础入门

写在前面的话,我这个人虚荣心强

1.scrapy 的安装

1.scrapy 依赖的包太多,所以我建议使用anaconda安装,一路下一步安装即可

2.安装scrapy 只需 在conda 命令行里面输入 conda install Scrapy 即可。

2.配置scrapy 环境变量  c:\ProgramData\Anaconda3\Scripts,把这个路径配置到window环境变量里面。(不配这个,下一步没法执行哦!)

3.scrapy 常用命令

1.fetch: 它使用Scrapy downloader 提取的 URL。

2.runspider: 它用于而无需创建一个项目运行自行包含蜘蛛(spider)。

3.settings: 它规定了项目的设定值。

4.shell: 这是一个给定URL的一个交互式模块。

5.startproject: 它创建了一个新的 Scrapy 项目。

6.version: 它显示Scrapy版本。

7.view: 它使用Scrapy downloader 提取 URL并显示在浏览器中的内容。

一些项目相关的命令,如下:

8.crawl: 它是用来使用蜘蛛抓取数据;

9.check: 它检查项目并由 crawl 命令返回;

10.list: 它显示本项目中可用蜘蛛(spider)的列表;

11.edit: 可以通过编辑器编辑蜘蛛;

12.parse:它通过蜘蛛分析给定的URL;

13.bench: 它是用来快速运行基准测试(基准讲述每分钟可被Scrapy抓取的页面数量)。

4.创建scarpy项目 ,在cmd中输入scrapy startprojectfirst_scrapy,然后会在当前目录如下结构的项目

5.Spider类 :Spider是负责定义如何遵循通过网站的链接并提取网页中的信息的类。它是所有其他的蜘蛛(spider)都必须继承的类。它具有以下类:

class scrapy.spiders.Spider

下面的表显示了 scrapy.Spider 类的字段:

1 name

这是 spider 的名字

2 allowed_domains

它是允许 spider 抓取域名称的列表

3 start_urls

这是供以后蜘蛛将开始抓取的URL列表的根

4 custom_settings

这些设置在蜘蛛运行时会从项目范围内覆盖配置

5 crawler

它是链接到 spider 实例绑定的 Crawler 对象的属性

6 settings

这些是运行一个 spider 的设置

7 logger

它是用来发送日志消息的 python 记录器

8 from_crawler(crawler,*args,**kwargs)

它是由 spider 创建的一个类方法。参数是:

crawler: 抓取工具到 spider 实例将被绑定;

args(list): 这些参数传递给方法: _init_();

kwargs(dict): 这些关键字参数传递给方法: _init_().

9 start_requests()

如果不指定特定的URL,蜘蛛会打开抓取,Scrapy调用start_requests()方法

10 make_requests_from_url(url)

它是用于将URL网址转换为请求方法

11 parse(response)

这个方法处理响应并返回废弃数据

12 log(message[,level,component])

这个方法会通过蜘蛛发送日志记录信息

13 closed(reason)

这种方法在当蜘蛛关闭时调用

6  item类 Scrapy进程可通过使用蜘蛛提取来自网页中的数据。Scrapy使用Item类生成输出对象用于收刮数据。Item是保存结构数据的地方,Scrapy可以将解析结果以字典形式返回,但是Python中字典缺少结构,在大型爬虫系统中很不方便。Item提供了类字典的API,并且可以很方便的声明字段,很多Scrapy组件可以利用Item的其他信息。

定义Item

定义Item非常简单,只需要继承scrapy.Item类,并将所有字段都定义为scrapy.Field类型即可

[python]view plaincopy

import scrapy

classProduct(scrapy.Item):

name = scrapy.Field()

price = scrapy.Field()

stock = scrapy.Field()

last_updated = scrapy.Field(serializer=str)

Item Fields  (项目字段)

项目字段用于显示每个字段的元数据。字段对象上的值没有限制,可访问元数据的键不包含的元数据的任何引用列表。字段对象用于指定所有字段元数据,您可以根据项目您的要求指定任何其他字段键。字段对象可以通过使用 Item.fields 属性进行访问。Field对象可用来对每个字段指定元数据。例如上面last_updated的序列化函数指定为str,可任意指定元数据,不过每种元数据对于不同的组件意义不一样。

7 .Scrapy项目加载器类(Item Loader)

项目加载器提供了一个方便的方式来填补从网站上刮取的项目。

声明项目加载器

fromscrapy.loaderimportItemLoader

frommyproject.itemsimportProduct

defparse(self, response):

l = ItemLoader(item=Product(), response=response)

l.add_xpath('name','//div[@class="product_name"]')

l.add_xpath('name','//div[@class="product_title"]')

l.add_xpath('price','//p[@id="price"]')

l.add_css('stock','p#stock]')

l.add_value('last_updated','today')# you can also use literal values

returnl.load_item()

8.定于数目机构items

项目是用于收集从网站刮取下数据的容器。 在启动蜘蛛时必须要定义项目。 要定义项目,在目录 first_scrapy自定义目录下找到编辑items.py文件。items.py 看起来如下所示:

import scrapy

class First_scrapyItem(scrapy.Item):

# define the fields for your item here like:

# name = scrapy.Field()

MyItem 类包含一个数字,scrapy已为我们建成预先定义的对象继承项目。举例来说,如果想从网站中提取名称,URL和说明, 需要定义字段这三个属性。

因此,让我们再补充一点,来收集这些项目:

from scrapy.item import Item, Field

class First_scrapyItem(scrapy.Item):

name = scrapy.Field()

url = scrapy.Field()

desc = scrapy.Field()

9.第一个爬虫

Spider定义从提取数据的初始URL,如何遵循分页链接以及如何提取和分析在items.py定义字段的类。Scrapy提供了不同类型的蜘蛛,每个都给出了一个具体的目的。

在 first_scrapy/spiders 目录下创建了一个叫作 “first_spider.py” 文件,在这里可以告诉scrapy。要如何查找确切数据,这里必须要定义一些属性:

name: 它定义了蜘蛛的唯一名称;

allowed_domains: 它包含了蜘蛛抓取的基本URL;

start-urls: 蜘蛛开始爬行的URL列表;

parse(): 这是提取并解析刮下数据的方法;

下面的代码演示了蜘蛛代码的样子:

# -*- coding: utf-8 -*-

# Define here the models for your scraped items

#

# See documentation in:

# http://doc.scrapy.org/en/latest/topics/items.html

import scrapy

class firstSpider(scrapy.Spider):

name = "first"

allowed_domains = ["yiibai.com"]

start_urls = [

"http://www.yiibai.com/scrapy/scrapy_create_project.html",

"http://www.yiibai.com/scrapy/scrapy_environment.html"

]

def parse(self, response):

filename = response.url.split("/")[-1]

print 'Curent URL => ', filename

with open(filename, 'wb') as f:

f.write(response.body)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • scrapy学习笔记(有示例版) 我的博客 scrapy学习笔记1.使用scrapy1.1创建工程1.2创建爬虫模...
    陈思煜阅读 12,653评论 4 46
  • Scrapy介绍 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信...
    JasonDing阅读 122,473评论 15 126
  • Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架。其最初是为了 页面抓取 (更确切来说, 网络...
    王小鱼鱻阅读 748评论 0 1
  • 总结一下之前的spider,总的来说,Spider类就是定义了如何爬取某个(或某些)网站。包括了爬取的动作以及如何...
    王小鱼鱻阅读 1,225评论 0 2
  • 旅人 (包蓉) 这座城 失眠了 城里的你们和我 不觉...
    佚名先生吖阅读 222评论 0 0