Scrapy框架主要由五大组件组成,分别是调度器(Scheduler)、下载器(Downloader)、爬虫(Spider)和实体管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。
Scrapy项目的准备工作
conda create -n spider python=3.6.3
conda activate spider
conda install scrapy
? ? ?1.建立项目文件
scrapy startproject 项目名
-
建立爬虫文件
scrapy genspider 爬虫名 域名
-
运行爬虫文件
scrapy crawl 爬虫名
-
BOT_NAME:项目名 -
USER_AGENT:索要爬取网站的USER_AGENT。默认是注释的,这个东西非常重要,如果不写很容易被判断为电脑,简单点写一个Mozilla/5.0即可 -
ROBOTSTXT_OBEY:是否遵循机器人协议,默认是true,需要改为false,否则很多东西爬不了 -
CONCURRENT_REQUESTS:最大并发数,很好理解,就是同时允许开启多少个爬虫线程 -
DOWNLOAD_DELAY:下载延迟时间,单位是秒,控制爬虫爬取的频率,根据你的项目调整,不要太快也不要太慢,默认是3秒,即爬一个停3秒,设置为1秒性价比较高,如果要爬取的文件较多,写零点几秒也行 -
COOKIES_ENABLED:是否保存COOKIES,默认关闭,开机可以记录爬取过程中的COKIE,非常好用的一个参数 -
DEFAULT_REQUEST_HEADERS:默认请求头,上面写了一个USER_AGENT,其实这个东西就是放在请求头里面的,这个东西可以根据你爬取的内容做相应设置。 -
ITEM_PIPELINES:项目管道,300为优先级,数字越小爬取的优先度越高 -
可以设置日志的等级与日志存放的路径。LOG_LEVEL= "" LOG_FILE="日志名.log"。日志等级分为:1.DEBUG 调试信息;2.INFO 一般信息;3.WARNING 警告;4.ERROR 普通错误;5.CRITICAL 严重错误 如设置 LOG_LEVEL="WARNING",就只会WARNING等级之下的ERROR和CRITICAL? ? ? 默认等级是1
代码编写
打开项目下的爬虫py文件,如可以使用xpath提取百度首页的标题title
代码的运行可以选择
-
打开终端cmd,输入 scrapy crawl baidu(爬虫名) -
写一个run文件作为程序的入口,split是必须写的,目的是把字符串转为列表形式,第一个参数是scrapy,第二个crawl,第三个baidu(爬虫名)
导出为json或scv格式
使用run.py执行爬虫文件时添加-o选项即可
scrapy crawl 项目名 -o 文件名.csv
scrapy crawl 项目名 -o 文件名.json
对于json文件,在setting.js文件里添加,设置编码格式,否则会乱码:`FEED_EXPORT_ENCODING='utf-8'
|