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进行序列化返回数 ...
随机推荐
- Lasso估计学习笔记(二)
先看Lasso估计学习笔记(一),这篇是续的上一篇
- 解决HTML5实现一键拨号、一键发短信及上传头像兼容性问题
HTML5实现一键拨号,一键发短信以及上传头像等问题都是比较常见的场景,近期在做移动端项目的时候遇到阻挠,通过查找资料解决了问题: 废话不多说,直接上案例代码: HTML5实现一键拨号: <a ...
- c++的构造和析构
//文件名ss.h 1 #pragma once class ss { private: char*p;//利用指针来为p申请对内存 float height; ; char sex; public: ...
- FileUtils工具类的使用
import org.apache.commons.io.FileUtils; import org.apache.commons.io.filefilter.DirectoryFileFilter; ...
- 解读BloomFilter算法(转载)
1.介绍 BloomFilter(布隆过滤器)是一种可以高效地判断元素是否在某个集合中的算法. 在很多日常场景中,都大量存在着布隆过滤器的应用.例如:检查单词是否拼写正确.网络爬虫的URL去重.黑名单 ...
- MVC整体运行流程一(进入管道)
1.在浏览器输入 https://www.cnblogs.com/zhangmm96/发送一个HTTP到web服务器,Web服务器WIndows内核中的HTTP.SYS组件捕捉当前请求,该组件分析出是 ...
- java杨辉三角
public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println( ...
- 宝塔安装Lsky Pro图床教程
欢迎访问我的个人博客皮皮猪:http://www.zhsh666.xyz Lsky Pro图床是一个支持本地.阿里云 OSS.腾讯云 COS.七牛云.又拍云等储存方式的基于PHP的开源图床. 项目主页 ...
- YARN底层基础库
YARN基础库是其他一切模块的基础,它的设计直接决定了YARN的稳定性和扩展性,YARN借用了MRV1的一些底层基础库,比如RPC库等,但因为引入了很多新的软件设计方式,所以它的基础库更多,包括直 ...
- 配置Office Excel运行Python宏脚本
基本环境 名称 版本 操作系统 Windows 10 x64 Office 2016 安装Python 1.下载Python安装包 登录https://www.python.org/downloads ...