爬虫笔记(二)

一、安装scrapy框架:
1,安装:pip install scrapy
2,windows下,还需要安装pypiwin32(不安装,在运行scrapy项目的时候就会报错)

二、创建项目爬虫:
cmd下操作
1,创建项目:scrapy startproject [爬虫名字]
2,创建爬虫:进入到爬虫所在的路径下,执行命令:scrapy genspider [爬虫名字] ["爬虫的域名"]
注意:爬虫名字不能和项目名称相同

三、项目目录结构
1,items.py:用来存放爬虫爬取下来数据的模型
2,middlewares.py:用来存放各种中间件的文件
3,pipelines.py:用来将items的模型存储到本地磁盘中
4,settings.py:本爬虫的一些配置信息(比如请求头、多久发送一次请求、ip代理池等)
5,scrapy.cfg:项目的配置文件
6,spiders包:以后所有的爬虫,都是存放到这个里面。

四、步骤
settings.py
1,机器人设置:ROBOTSTXT_OBEY = False
2,构建请求头:DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'
}

五、糗事百科Scrapy爬虫笔记:
1,response是一个scrapy.http.response.html.HtmlResponse对象,可以执行xpath和css语法来提取数据
2,提取出来的数据是一个‘Selector’或者是一个‘SelectorList’,如果想要获取其中的字符串,应该执行‘getall’或者‘get’方法
3,getall方法:获取‘selector’中所有的文本,返回的是一个列表
4,get方法:获取的是‘selector’中第一个文本,返回的是一个str类型
5,如果数据解析回来,要传给pipline处理,那么可以使用‘yield’来返回,或者是手机所有的item,最后统一使用return返回
6,item:建议在‘items.py’中定义好模型,以后就不要使用字典
7,pipline:这个是专门用来保存数据的,其中有三个方法会经常使用
open_spider(self, spider):当爬虫被打开的时候执行
process_item(self, item, spider):当爬虫有item传过来的时候会被调用
close_spder(self, spider):当爬虫关闭的时候会被调用
要激活pipline,应该在‘setting.py’中,设置‘ITEM_PIPELINES’

六、JsonLinesItemExporter和JsonItemExporter:
保存json数据的时候,可以使用这两个类,让操作变得更加简单
1,JsonItemExporter是每次把数据添加到内存中,最后统一一次写入磁盘,好处是存储的数据是一个满足json规则的数据
坏处是如果数据量比较大,比较耗内存
2,JsonLinesItemExporter是每次调用‘export_item’的时候把这个item存储到硬盘中,坏处是每一个字典是一行,
整个文件不是一个满足json格式的文件,好处是处理数据的时候就直接存储到硬盘中,这样就不会耗内存,数据也比较安全

posted @ 2019-08-07 15:25  TSeven.Coming  阅读(92)  评论(0编辑  收藏  举报