爬蟲總結8
阿新 • • 發佈:2018-12-04
1. 非同步和非阻塞的區別
非同步是過程,非阻塞強調的是狀態
2. pymongo模組
from pymongo import MongoClient # client = MongoClient(host=, port=) uri = 'mongodb://賬號:密碼@127.0.0.1' client = MongoClient(uri, port=27017) # 連線物件 # col = client['資料庫名']['集合名']' col = client.資料庫名.集合名 col.insert({一條文件}/[{}, {}, ...]) col.find_one({條件}) rets = col.find({條件}) # 返回的是隻能遍歷一次的cursor遊標物件 col.delete_one({條件}) col.delete_many({條件}) col.update({條件}, {'$set':{指定更新的kv}}, multi=False/True, # 預設False表示只更新一條 upsert=False/True) # 預設False,True表示沒有就插入,存在就更新
3. scrapy簡單使用
建立專案 scrapy startproject 專案名
在專案路徑下建立爬蟲 scrapy genspider 爬蟲名 爬取範圍的域名
在專案路徑下執行爬蟲 scrapy crawl 爬蟲名
4. spider.py爬蟲模組
class Spider(scrapy.Spider): name = 爬蟲名 allowed_domains = ['爬取範圍的域名', '可以是多個'] start_urls = ['起始的url', '可以是多個'] # scrapy.Spider類必須有名為parse的解析函式 def parse(self, response): # 專門解析起始url對應的response yield item # {} BaseItem request None
5. scrapy提取的方法
response.xpath(xpath_str) # 返回由selector物件構成的類list
response.xpath(xpath_str).extract() # 返回包含字串的列表
response.xpath(xpath_str).extract_first() # 返回列表中第一個字串
6. response響應物件的常用屬性
response.url response.request.url response.headers response.request.headers response.status response.body # 響應內容 bytes
7. pipelines.py管道需要在settings.py中開啟設定
8. 在settings.py中ROBOTSTXT_OBAY改為False表示忽略robots協議
9. scrapy框架的352陣容
三個內建資料物件
request: url headers method post_data
response: url headers status body
item: {}/BaseItem
五大模組
scheduler排程器
downloader下載器
spider爬蟲
pipeline管道
engine引擎
兩個中介軟體:對request、response預處理
spider_middlewares爬蟲中介軟體
downloader_middlewares下載中介軟體
10. scrapy的工作流程
a. spider中把start_url構造成request
b. request--爬蟲中介軟體--引擎--排程器,把request放入請求佇列
c. 調取器從佇列中取出request--引擎--下載中介軟體--下載器,傳送請求,獲取response
d. response--下載中介軟體--引擎--爬蟲中介軟體--spider
e. spider對response提取,提取url,構造成request--重複b步驟
f. spider對response提取,提取item--引擎--管道