Scrapy高级用法
日志相关
一、日志相关变量
LOG_LEVEL = ''
LOG_FILE = '文件名.log'
二、日志级别
5 CRITICAL :严重错误
4 ERROR :普通错误
3 WARNING :警告
2 INFO :一般信息
1 DEBUG :调试信息
注意: 只显示当前级别的日志和比当前级别日志更严重的
三、其他导出
设置数据导出编码(主要针对于json文件)
FEED_EXPORT_ENCODING = ''
4、非结构化数据存储路径
IMAGES_STORE = '路径'
5、设置User-Agent
USER_AGENT = ''
数据持久化
将数据保存的方法
一、MySQL
有关MySQL请访问MySQL
在setting.py中定义相关变量
# mysql 配置
MYSQL_HOST = 'xxx.xxx.xxx.xxx'
MYSQL_USER = 'xxxx'
MYSQL_PWD = 'xxxxx'
MYSQL_DB = 'xxxxx'
MYSQL_CHAR = 'utf8'
pipelines.py中新建管道类,并导入settings模块
class Mysql(object):
def open_spider(self,spider):
# 爬虫开始执行1次,用于数据库连接
def process_item(self,item,spider):
# 用于存储抓取的item数据
def close_spider(self,spider):
#爬虫结束时执行1次,用于断开数据库连接
settings.py中添加此管道
ITEM_PIPELINES = {'':200}
注意 :
process_item()
函数中一定要return item ***
第一个管道返回的item会继续交由下一个管道处理,否则返回并传入下一个管道的值为None
二、MongoDB
有关MongoDB请访问MongoDB
在settings.py中定义相关变量
# MongoDB配置
MONGO_HOST = '10.0.0.7'
MONGO_PORT = 27017
pipelines.py中新建管道类,并导入settings模块
class Mysql(object):
def open_spider(self,spider):
# 爬虫开始执行1次,用于数据库连接
def process_item(self,item,spider):
# 用于存储抓取的item数据
def close_spider(self,spider):
#爬虫结束时执行1次,用于断开数据库连接
settings.py中添加此管道
三、csv
命令格式
scrapy crawl maoyan -o maoyan.csv
四、json
scrapy crawl maoyan -o maoyan.json
这里运行之后,打开maoyan.json
这里是编码的问题,需要在settings.py
中指定编码为utf-8
# settings.py
FEED_EXPORT_ENCODING = 'utf-8'
命令行
一、 基本使用
scrapy shell URL地址
request.headers :请求头(字典)
reqeust.meta :item数据传递,定义代理(字典)
response.text :字符串
response.body :bytes
response.xpath('')
二、Requests
1、url
2、callback
3、headers
4、meta :传递数据,定义代理
5、dont_filter :是否忽略域组限制
默认False,检查allowed_domains['']
设置中间件
一、User-Agent
编辑middlewares.py
from fake_useragent import UserAgent
class RandomUseragentMiddleware(object):
def process_request(self,reuqest,spider):
request.headers['User-Agent'] = UserAgent().random
设置优先级settings.py
DOWNLOADER_MIDDLEWARES = {'xxx.xxxx.xxx.RandomUseragentMiddleware' : 优先级}
二、代理
编辑middlewares.py
class RandomProxyDownloadMiddlewares(object):
def process_request(self, reques, spider):
proxy = 'http://127.0.0.1:8000'
request.meta['proxy'] = proxy
def process_exception(self, request, exception, spider):
# 如果代理不可用,则交给此函数处理
return request
三、并发
编辑settings.py
CONCURRENT_REQUESTS = 32
默认并发数为16,可根据自身配置酌情设置
四、延时
下载延迟时间(每隔多长时间请求一个网页)
DOWNLOAD_DELAY 会影响 CONCURRENT_REQUESTS,不能使并发显现
有CONCURRENT_REQUESTS,没有DOWNLOAD_DELAY: 服务器会在同一时间收到大量的请求
有CONCURRENT_REQUESTS,有DOWNLOAD_DELAY 时,服务器不会在同一时间收到大量的请求
DOWNLOAD_DELAY = 3
非结构化数据
spider: yield item['链接']
pipelines.py
from scrapy.pipelines.images import ImagesPiprline
class SpiderPipeline(ImagesPipe):
def get_media_requests(self, item, info):
yield scrapy.Request(item['链接'])
settings.py
IMAGES_STROE = ''
ITEM_PIPELINES = {}
Scrapy高级用法的更多相关文章
- Visual Studio 宏的高级用法
因为自 Visual Studio 2012 开始,微软已经取消了对宏的支持,所以本篇文章所述内容只适用于 Visual Studio 2010 或更早期版本的 VS. 在上一篇中,我已经介绍了如何编 ...
- SolrNet高级用法(分页、Facet查询、任意分组)
前言 如果你在系统中用到了Solr的话,那么肯定会碰到从Solr中反推数据的需求,基于数据库数据生产索引后,那么Solr索引的数据相对准确,在电商需求中经常会碰到菜单.导航分类(比如电脑.PC的话会有 ...
- sqlalchemy(二)高级用法
sqlalchemy(二)高级用法 本文将介绍sqlalchemy的高级用法. 外键以及relationship 首先创建数据库,在这里一个user对应多个address,因此需要在address上增 ...
- Solr学习总结(六)SolrNet的高级用法(复杂查询,分页,高亮,Facet查询)
上一篇,讲到了SolrNet的基本用法及CURD,这个算是SolrNet 的入门知识介绍吧,昨天写完之后,有朋友评论说,这些感觉都被写烂了.没错,这些基本的用法,在网上百度,资料肯定一大堆,有一些写的 ...
- 再谈Newtonsoft.Json高级用法
上一篇Newtonsoft.Json高级用法发布以后收到挺多回复的,本篇将分享几点挺有用的知识点和最近项目中用到的一个新点进行说明,做为对上篇文章的补充. 阅读目录 动态改变属性序列化名称 枚举值序列 ...
- Jquery remove 高级用法
Jquery remove 高级用法 html 代码 <div class="file-image">abc1111</div><div class= ...
- Newtonsoft.Json高级用法(转)
手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...
- redis(二)高级用法
redis(二)高级用法 事务 redis的事务是一组命令的集合.事务同命令一样都是redis的最小执行单元,一个事务中的命令要么执行要么都不执行. 首先需要multi命令来开始事务,用exec命令来 ...
- 【转】 Newtonsoft.Json高级用法
手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...
随机推荐
- 深度搜索(dfs)+典型例题(八皇后)
深度优先搜索简称深搜,从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”. 如上面的图所示:加入我们要找一个从V0到 ...
- Python机器学习之数据探索可视化库yellowbrick-tutorial
背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维.陆续使用过plotly ...
- Appium+Python+Genymotion ------环境配置
前言 之前总是在找方向,也研究了很多的工具,终于找到了适合自己的一套,打算把学习的过程做一个记录,给自己加深印象,也希望能给其他人一些帮助. 一.工具准备 1.Appium // http://a ...
- GStreamer基础教程07 - 播放速率控制
摘要 在常见的媒体播放器中,通常可以看到快进,快退,慢放等功能,这部分功能被称为“特技模式(Trick Mode)”,这些模式有个共同点:都通过修改播放的速率来达到相应的目的. 本文将介绍如何通过GS ...
- FILEBEAT+ELK日志收集平台搭建流程
filebeat+elk日志收集平台搭建流程 1. 整体简介: 模式:单机 平台:Linux - centos - 7 ELK:elasticsearch.logstash.kiban ...
- [Flowable] - 工作流是什么?BPM是什么?
工作流管理系统基本概念 近两年随着电子商务环境不断演进(例如阿里巴巴的B2B电子商务平台),从原来支持企业内部单系统的业务流程.到企业内部应用.服务的集成,再进一步向企业与合作伙伴之间业务交互,工作流 ...
- Django之ORM-model模型关系
模型类关系 1)一对多关系例:图书类-英雄类 models.ForeignKey() 定义在多的类中. 2)多对多关系例:新闻类-新闻类型类 体育新闻 国际新闻models.ManyToManyFie ...
- yolo v2
https://blog.csdn.net/wfei101/article/details/79398563 https://blog.csdn.net/oppo62258801/article/de ...
- GIt到本地小技巧
运行CMD自动到C盘,假如我要把项目clone D盘 ,就要去cd : D:\.. 乱七八糟的重复工作.烦死了. 下面是更加方便的技巧 直接在要GIt clone的路径打上CMD,然后回车.方便多了, ...
- Java虚拟机详解(八)------虚拟机监控和分析工具(2)——可视化
上篇博客我们介绍了虚拟机监控和分析命令行工具,由于其不够直观,不是很容易排查问题,那么本篇博客我们就来介绍几个可视化工具. 1.JConsole JConsole(Java Monitoring an ...