8.scrapy的第一个实例
1.创建项目:
a.在想创建项目的目录按:shift+右键——在此处打开命令窗口(或 在cmd里cd进入想要的目录)输入CMD命令(此处不用test,因为系统已经有一个此名字,将报错提示已存在):
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。注意:在linux 系统内如提示权限问题,则在命令前加 sudo ~
scrapy startproject test2
b.接下来在这个目录即可看到”test2“的文件夹:(test2里保存的是要引用的模块;cfg文件是scrapy部署时的配置文件;)
2.test2目录下文件及作用:
__init__.py items.py # Items的定义,定义爬取的数据结构 middlewares.py # Middlewares的定义,定义爬取时的中间件 pipelines. py # Pipelines的定义,定义数据管道 settings.py #配置文件 iders #放置 Spiders的文件夹 __init__.py
==============================
3.创建 Spider
Spider是自己定义的类, Scrap用它来从网页里抓取内容,并解析抓取的结果。不过这个类必须继承 Scrap提供的 Spider类 scrap. Spider,还要定义Spider的名称和起始请求,以及怎样处理爬取后的结果的方法。
也可以使用命令行创建一个 Spider。比如要生成 baidu这个 Spider,可以执行如下cmd命令:
cd test2
scrapy genspider baidu fanyi.baidu.com
进入刚才创建的utoi件夹,然后执行 genspider命令。第一个参数是 Spider的名称,第二个参数是网站域名。执行完毕之后, spiders文件夹中多了一个 quotes. py,它就是刚刚创建的 Spider,内容如下:
# -*- coding: utf-8 -*- import scrapy class QuotesSpider(scrapy.Spider): name = 'baidu' allowed_domains = ['fanyi.baidu.com\'] start_urls = ['http://fanyi.baidu.com\/'] def parse(self, response): pass
【说明】这里有三个属性—name、 allowed domains和 start urls,还有一个方法 parse
★name:它是每个项目唯一的名字,用来区分不同的 Spider
★allowed domains:它是允许爬取的域名,如果初始或后续的请求链接不是这个域名下的,则请求链接会被过滤掉。
★start urls:它包含了 Spider在启动时爬取的url列表,初始请求是由它来定义的。
★parse:它是 Spider的一个方法。默认情况下,被调用时 start urls里面的链接构成的请求完成下载执行后,返回的响应就会作为唯一的参数传递给这个函数。该方法负责解析返回的响应、提取数据或者进一步生成要处理的请求。
4.创建ltem
Item是保存爬取数据的容器,它的使用方法和字典类似。不过,相比字典,ltem多了额外的保护机制,可以避免拼写错误或者定义字段错误。
创建Iem需要继承 scrap.Item类,并且定义类型为 scrap. Field的字段。观察目标网站,我们可以获取到到内容有text、 author、tags。
定义Iem,此时将 Items.py修改如下:
import scrapy class QuoteItem(scrap. Item) text= scrapy. Field() author scrapy. Field() tags= scrapy. Field() #这里定义了三个字段,接下来爬取时我们会使用到这个Item。
