创建项目与爬虫
1.创建项目:在项目所要存放的文件夹中打开cmd,输入scrapy startproject 项目名称
2.创建爬虫:进入项目所在路径后输入scrapy genspider 爬虫名字 “域名”
(注:爬虫名不能与项目名相同)
3.项目目录结构
items.py:用来存放爬虫爬取下来数据。
middlewares.py:用来存放各种中间件的文件。
pipelines.py:用来将items的模型存储到本地磁盘中。
settings.py:本爬虫的一些配置信息(比如请求头、多久发送一次请求、ip代理池等)。
scrapy.cfg:项目的配置文件。
spiders包:以后所有的爬虫,都是存放到这个里面。
4.基础设定
协议
请求头
执行指定爬虫(在cmd中启动 scrapy crawl 爬虫名 )
[注:打印类型后可以找到该属性所属的包:eg:该response类型为<class ‘scrapy.http.response.html.HtmlResponse’>,则可导入]
使项目在python文件中执行(不用在cmd中执行 )
cmdline.execute(“scrapy crawl qsbk_spider”.split())
==cmdline.execute([“scrapy”,‘crawl’,‘qsbk_spider’])
xpath获取文本:/text()
去掉上下行空格:strip()
将爬取的数据传递给pipelines处理
(通过yield将信息传递给engine再由其传递给pipelines)
在setting中激活piplilne,qsbk爬虫下载处理的优先级(数值越小优先级越高)
pipelines中的基础结构
* open_spider(self,spider)
:当爬虫被打开的时候执行。
* process_item(self,item,spider)
:当爬虫有item传过来的时候会被调用。
* close_spider(self,spider)
:当爬虫关闭的时候会被调用。
在items处固定好spride所爬取向pipelines传递的数据
item.py文件进行相应的修改
item=QsbkItem()
将数据转换成字典 dict( )
[数据转换成字典才可以json格式进行储存]
- response是一个
scrapy.http.response.html.HtmlResponse
对象。可以执行xpath
和css
语法来提取数据。 - response提取出来的数据,是一个
Selector
或SelectorList
对象。如果想要获取其中的字符串。那么应该执行getall
或者get
方法。 - getall方法:获取
Selector
中的所有文本。返回的是一个列表。 - get方法:获取的是
Selector
中的第一个文本。返回的是一个str类型。
pipelines中保存json类数据常用的两个类 (优化数据存储)(xml,csv等)
(JsonItemExporter, JsonLinesItemExporter)
JsonItemExporter:先将数据添加到内存中(不适合数据量过大的数据存储),最后统一写入(‘wb’)到磁盘中(存储的数据是一个满足json规则的数据)
JsonLinesItemExporterexport_item:将item存储到硬盘中,每一个字典是一行,整个文件不是一个满足json格式的文件。但是每次处理数据的时候就直接存储到了硬盘中,这样不会损耗内存,且数据较为安全
设置爬取等待时间
爬取多个页面(通过获取下一页的标签)