Scrapy详解
一、爬蟲生態框架
在管道傳數據只能傳字典和items類型。
將 上一return語句注釋則會報錯? 如:
?
?
如上圖,爬蟲文件中有一個name屬性,如果多個爬蟲可以通過這個屬性在管道控制分析的是哪個爬蟲的數據
日志文件
添加紅框里面的一條代碼,讓打印結果只顯示warning級別及以上的警告
?
如何保存日志信息
發現運行后沒有任何輸出
項目中多了log.log日志文件
打開log.log日志文件即日志信息
?items類型對象
在items文件中聲明了name、last的鍵在爬蟲文件中聲明即可用
?
scrapy shell 用法
scrapy shell + 網址? 會進入一個ipython可以測試response? 如:
模仿瀏覽器
改為自己瀏覽器的user_agent信息
?
更改遵守robots規則
將True改為False
?提取下一頁url: scrapy.Request(url, callback)用來獲取網頁里的地址
?callback:指定由那個函數去處理
?分布式爬蟲:
1.多臺機器爬到的數據不能重復
2.多臺機器爬到的數據不能丟失
?
1.redis是什么?
Redis是一個開源的、內存數據庫,他可以用作數據庫、緩存、消息中間件。它支持多種數據類型的數據結構,如字符串、哈希、列表、集合、有序集合(可能存在數據丟失)
? redis安裝? Ubuntu: sudo apt-get install redis-server? ? Centos:sudo yum install redis-server
檢測redis狀態
redis服務的開啟:sudo /etc/init.d/redis-server start
重啟:sudo /etc/init.d/redis-server restart
關閉:sudo /etc/init.d/redis-server stop
redis連接客戶端:redis-cli
redis遠程連接客戶端:redis-cli -h<hostname> -p? <port>(默認6379)
redis常用命令:
選擇數據庫:select 1? (第一個數據庫為0 ,默認16個數據庫,可修改配置文件修改數據庫個數且個數沒有上限)
查看數據庫里的內容:keys *
向數據庫加列表:lpush mylist a b c d (數據可重復)
查看列表數據:lrange mylist 0 -1
查看列表元素個數:llen mylist
?
向set中加數據:sadd myset a b c d(不能重復,無序)
查看set中的數據:smembers myset
查看set中的元素個數:scard myset
向有序zset中添加數據:zadd myzset 1 a 2 b 3 c 4 d
查看zset編號和數據:zrange myzset 0 -1 withscores
?
查看zset數據
改變編號 如改變a的編號:
統計zset元素的個數zcard myzset
刪除當前數據庫:flushdb
清楚所有數據庫:flushall
安裝scrapy-redis
sudo pip install scrapy_redis
下載scrapy-redis例子:git clone https://github.com/rolando/scrapy-redis.git
setting.py中:
# 去重
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
# 調度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# 調度器內容持久化
SCHEDULER_PERSIST = True
ITEM_PIPELINES = {
'example.pipelines.ExamplePipeline': 300,
# 負責把數據存儲到redis數據庫里
'scrapy_redis.pipelines.RedisPipeline': 400,
}
最后需把redis加上
序列化:把一個類的對象變成字符串最后保存到文件
反序列化:保存到文件的對象是字符串格式? -->? 讀取字符串 --> 對象
?
?
?
注:后臺打印的數據較雜亂,我只想要自己爬到的東西怎么辦?
第一步:
setting.py中加? LOG_LEVEL = 'WARNING'??
這句代碼會將不必要的數據屏蔽,屏蔽的數據如下:
?
第二步:
然而現在還不是最簡潔的,還有雜項。這樣做,將response.xpath('*********')變成response.xpath('*********').extract()
怎么樣是不是你想要的。
?
轉載于:https://www.cnblogs.com/DonCharles/p/9930004.html
總結
- 上一篇: 【对讲机的那点事】如何使用阿里通信云对讲
- 下一篇: 小程序wx.createInnerAud