1. 程式人生 > >Scrapy-Redis分布式爬蟲常規操作

Scrapy-Redis分布式爬蟲常規操作

ODB 個數 mongo 空格 @class -- 人的 美化 sibling

一、X-path 的常規用法
1、/是從根節點選取,有順序
2、//從當前節點選擇文檔中的節點,無順序
3、.選取當前節點
4、..選取當前節點的父節點
5、@選取屬性
6、 //div[@class=‘doclist‘]/a
選擇class屬性為doclist的div標簽下的所有a的標簽。
a[1]是選擇第一個,a[last()]是選擇最後一個。
a[psssition()<=3]是選擇前3個a標簽
7、//ul[@class= "b_listul"]/li[2]/following-sibling::ul[1]
選擇ul/li[2]標簽的同級第一個ul標簽;
preceding-silbling::li[1]是選擇ul標簽之前的。

8、//book/title | //book/price
選取book標簽下咋所有title和price標簽。
9、//div[@class = ‘doclist‘]/a/text()
選擇a標簽的文本內容。
a/@href是選擇a標簽的href屬性內容。
10、string(//ul[@class = "b_listul"])
取//ul[@class = "b_listul"]標簽下的所有文本內容。
----------------------------------------------------------------------
二、redis的相關命令
1、keys aa*
查看所有的以aa開始的redis_key

2、flushdb
清空redis數據庫,即清空所有的redis_key
3、redis 中存在兩種數據格式 (key 指向的value是一個集合list/set)
(1)、list集合,value是以list集合存在,特點是有序,可以重復
如 lpush name age 將name作為key, age作為value存入list集合中的最左邊(即list中第一位)
rpush name age 將name作為key, age作為value存入list集合中的最右邊(即list中最後一位)
如 lrange name 0 10 查看key=name 指向的value集合中,下標從第0位-第10位(前10個)元素中,key=name 的value值

沒有rrange
如 llen key_name 查看key_name中value存在的個數
(2)、set集合,value是以set集合存在特點是有序,去重
如 sadd name age ,將name作為key, age作為value存入set集合中
如 scard key_name 查看key_name中value存在的個數
4、del key_name
刪除某個key,對應的value也會被刪除
5、rename old_key_name new_key_name
重新命名key_name
----------------------------------------------------------------------
三、MongoDB常用命令(這裏要看個人的習慣,平時采集到的數據我都放在了MongoDB裏)
1、show collections
查看所有的集合(表)
2、db.tb_name.findOne()
查看tb_name表中的一條數據
3、db.tb_name.find().pretty().limit(100)
查看100條數據,並美化輸出結果
4、db.tb_name.find({‘doctor_name‘:‘葉定偉‘})
查看醫生姓名為葉定偉的所有數據
5、db.tb_name.count()
查看tb_name表的數據量
6、db.tb_name.drop()
刪除tb_name表
----------------------------------------------------------------------
四、小結
1、strip() 方法用於移除字符串頭尾指定的字符(默認為空格或換行符)或字符序列。
註意:該方法只能刪除開頭或是結尾的字符,不能刪除中間部分的字符。
2、.extract 返回一個list(就是系統自帶的那個) 裏面是一些你提取的內容

Scrapy-Redis分布式爬蟲常規操作