提示:Twisted 是一个基于事件驱动的网络引擎框架,同样采用 Python 实现。
python -m pip install Scrapy由于 Scrapy 需要许多依赖项,因此安装时间较长,大家请耐心等待,关于其他平台的安装方法,可参考官方文档《Scrapy安装指南》。
C:\Users\Administrator>python Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 19:29:22) [MSC v.1916 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import scrapy >>> exit()如果可以正常执行
exit()
操作,并且没有出现 ERROR 错误,则说明安装成功。
命令 | 格式 | 说明 |
---|---|---|
startproject | scrapy startproject <项目名> | 创建一个新项目。 |
genspider | scrapy genspider <爬虫文件名> <域名> | 新建爬虫文件。 |
runspider | scrapy runspider <爬虫文件> | 运行一个爬虫文件,不需要创建项目。 |
crawl | scrapy crawl <spidername> | 运行一个爬虫项目,必须要创建项目。 |
list | scrapy list | 列出项目中所有爬虫文件。 |
view | scrapy view <url地址> | 从浏览器中打开 url 地址。 |
shell | csrapy shell <url地址> | 命令行交互模式。 |
settings | scrapy settings | 查看当前项目的配置信息。 |
C:\Users\Administrator>cd Desktop C:\Users\Administrator\Desktop>scrapy startproject Baidu New Scrapy project 'Baidu', using template directory 'd:\python\python37\lib\site-packages\scrapy\templates\project', created in: C:\Users\Administrator\Desktop\Baidu # 提示后续命令操作 You can start your first spider with: cd Baidu scrapy genspider example example.com打开新建的项目“Baidu”会有以下项目文件,如图所示:
图1:项目文件
C:\Users\Administrator\Desktop>cd Baidu C:\Users\Administrator\Desktop\Baidu>scrapy genspider baidu www.baidu.com Created spider 'baidu' using template 'basic' in module: Baidu.spiders.baidu下面呈现了项目的目录树结构,以及各个文件的作用:
Baidu # 项目文件夹 ├── Baidu # 用来装载项目文件的目录 │ ├── items.py # 定义要抓取的数据结构 │ ├── middlewares.py # 中间件,用来设置一些处理规则 │ ├── pipelines.py # 管道文件,处理抓取的数据 │ ├── settings.py # 全局配置文件 │ └── spiders # 用来装载爬虫文件的目录 │ ├── baidu.py # 具体的爬虫程序 └── scrapy.cfg # 项目基本配置文件从上述目录结构可以看出,Scrapy 将整个爬虫程序分成了不同的模块,让每个模块负责处理不同的工作,而且模块之间紧密联系。因此,您只需要在相应的模块编写相应的代码,就可以轻松的实现一个爬虫程序。
名称 | 作用说明 |
---|---|
Engine(引擎) | 整个 Scrapy 框架的核心,主要负责数据和信号在不同模块间传递。 |
Scheduler(调度器) | 用来维护引擎发送过来的 request 请求队列。 |
Downloader(下载器) | 接收引擎发送过来的 request 请求,并生成请求的响应对象,将响应结果返回给引擎。 |
Spider(爬虫程序) | 处理引擎发送过来的 response, 主要用来解析、提取数据和获取需要跟进的二级URL,然后将这些数据交回给引擎。 |
Pipeline(项目管道) | 用实现数据存储,对引擎发送过来的数据进一步处理,比如存 MySQL 数据库等。 |
图1:工作流程示意图
# 1、定义User-Agent USER_AGENT = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)' # 2、是否遵循robots协议,一般设置为False ROBOTSTXT_OBEY = False # 3、最大并发量,默认为16 CONCURRENT_REQUESTS = 32 # 4、下载延迟时间 DOWNLOAD_DELAY = 1其余常用配置项介绍:
# 设置日志级别,DEBUG < INFO < WARNING < ERROR < CRITICAL LOG_LEVEL = ' ' # 将日志信息保存日志文件中,而不在终端输出 LOG_FILE = '' # 设置导出数据的编码格式(主要针对于json文件) FEED_EXPORT_ENCODING = '' # 非结构化数据的存储路径 IMAGES_STORE = '路径' # 请求头,此处可以添加User-Agent、cookies、referer等 DEFAULT_REQUEST_HEADERS={ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en', } # 项目管道,300 代表激活的优先级 越小越优先,取值1到1000 ITEM_PIPELINES={ 'Baidu.pipelines.BaiduPipeline':300 } # 添加下载器中间件 DOWNLOADER_MIDDLEWARES = {}想要了解更多关于 Scrapy 框架的知识,可参考官方文档:https://docs.scrapy.org/en/latest/index.html
本文链接:http://task.lmcjl.com/news/18191.html