scrapy
scrapy工作流程
- 首先Spider(爬虫)将需要发送请求的url经过ScrapyEngine(引擎)交给调度器(Scheduler)
- Scheduler(调度器) 排序 入列处理后,在经过ScrapyEngine(引擎)到DownloaderMiddlewares(下载中间件)(user-agent cookie proxy)交给downloader
- Downlaoser向互联网发起请求,并接收响应(response).将响应在经过在经过ScrapyEngine(引擎)给了SpiderMiddlewares(爬虫中间件)交给Spiders
- Spiders处理response,提取数据并将数据经过ScrapyEngine交给itemPipeline(管道)保存数据
scrapy入门
pycharm Terminal控制面板
进入文件夹 cd xxx
scrapy startproject xx(scrapy项目)
cd xx
scrapy genspider xxxx(项目名称) douban.com
在settings中打开pipeline
1
2
3ITEM_PIPELINES = {
'myscrapy.pipelines.MyscrapyPipeline': 300,
}scrapy crawl xxxx(项目名称) 开始爬取(返回403,可以通过设置头部信息解决)
1 | DEFAULT_REQUEST_HEADERS = { |
- 第二种开始方式,在xx下新建start.py文件
1 | from scrapy import cmdline |
- 爬虫log较多,可以进行过滤,在settings中设置
1 | LOG_LEVEL = 'WARNING' |
- 导出response的类为<class ‘scrapy.http.response.html.HtmlResponse’> 需要通过自带模块进行解码
1 | from scrapy.http.response.html import HtmlResponse |
- 导入模块自带xpath
1 | li_list = response.xpath('//div[@class="side-links nav-anon"]/ul/li') |
- 在建立文件中
1 | import scrapy |
1 | import json |
- pipeline中的执行顺序,settings中可以设置多个pipeline例如,但是数字越低优先级越高
1 | ITEM_PIPELINES = { |
1 | import json |
logging模块检查程序warning
在settings中配置可以到处log
1
LOG_FILE = './log.log'
1 | import scrapy |
scrapy爬取文件流程
- 创建项目
- 创建爬虫
- 设置爬虫name
- 设置allow_domain
- 设置start_urls
- 设置log
- 实现数据提取方法
- pipeline可以保存数据