零基础必看教程!Scrapy高级用法!

日志相关

一、日志相关变量

每个新进群的小伙伴都送十套PDF!以及一套视频哦!

群:626017123

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 = {}
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值