【爬蟲開發(fā)】爬蟲開發(fā)從0到1全知識教程第11篇:Mongodb數(shù)據(jù)庫,介紹【附代碼文檔】

本教程的知識點為:爬蟲概要 爬蟲基礎(chǔ) 爬蟲概述 知識點: 1. 爬蟲的概念 requests模塊 requests模塊 知識點: 1. requests模塊介紹 1.1 requests模塊的作用: 數(shù)據(jù)提取概要 數(shù)據(jù)提取概述 知識點 1. 響應(yīng)內(nèi)容的分類 知識點:了解 響應(yīng)內(nèi)容的分類 Selenium概要 selenium的介紹 知識點: 1. selenium運行效果展示 1.1 chrome瀏覽器的運行效果 Selenium概要 selenium的其它使用方法 知識點: 1. selenium標(biāo)簽頁的切換 知識點:掌握 selenium控制標(biāo)簽頁的切換 反爬與反反爬 常見的反爬手段和解決思路 學(xué)習(xí)目標(biāo) 1 服務(wù)器反爬的原因 2 服務(wù)器常反什么樣的爬蟲 反爬與反反爬 驗證碼處理 學(xué)習(xí)目標(biāo) 1.圖片驗證碼 2.圖片識別引擎 反爬與反反爬 JS的解析 學(xué)習(xí)目標(biāo): 1 確定js的位置 1.1 觀察按鈕的綁定js事件 Mongodb數(shù)據(jù)庫 介紹 內(nèi)容 mongodb文檔 mongodb的簡單使用 Mongodb數(shù)據(jù)庫 介紹 內(nèi)容 mongodb文檔 mongodb的聚合操作 Mongodb數(shù)據(jù)庫 介紹 內(nèi)容 mongodb文檔 mongodb和python交互 scrapy爬蟲框架 介紹 內(nèi)容 scrapy官方文檔 scrapy的入門使用 scrapy爬蟲框架 介紹 內(nèi)容 scrapy官方文檔 scrapy管道的使用 scrapy爬蟲框架 介紹 內(nèi)容 scrapy官方文檔 scrapy中間件的使用 scrapy爬蟲框架 介紹 內(nèi)容 scrapy官方文檔 scrapy_redis原理分析并實現(xiàn)斷點續(xù)爬以及分布式爬蟲 scrapy爬蟲框架 介紹 內(nèi)容 scrapy官方文檔 scrapy的日志信息與配置 利用appium抓取app中的信息 介紹 內(nèi)容 appium環(huán)境安裝 學(xué)習(xí)目標(biāo)

完整筆記資料代碼:https://gitee.com/yinuo112/Backend/tree/master/爬蟲/爬蟲開發(fā)從0到1全知識教程/note.md

感興趣的小伙伴可以自取哦~


全套教程部分目錄:


部分文件圖片:

Mongodb數(shù)據(jù)庫

介紹

在前面的中我們學(xué)習(xí)了mysql這種關(guān)系型數(shù)據(jù)庫猖凛,那么接下來,我們會來學(xué)習(xí)一種非關(guān)系型數(shù)據(jù)庫mongodb绪穆,mongodb數(shù)據(jù)庫主要用于海量存儲辨泳,常被用在數(shù)據(jù)采集項目中虱岂。

內(nèi)容

  • mongodb的介紹和安裝
  • mongodb的簡單使用
  • mongodb的增刪改查
  • mongodb的聚合操作
  • mongodb的索引操作
  • mongodb的權(quán)限管理
  • mongodb和python交互(pymongo模塊)

mongodb文檔

[

mongodb和python交互

學(xué)習(xí)目標(biāo)
  1. 掌握 mongdb和python交互的增刪改查的方法
  2. 掌握 權(quán)限認證的方式使用pymongo模塊

1. mongdb和python交互的模塊

pymongo 提供了mongdb和python交互的所有方法 安裝方式: pip install pymongo

2. 使用pymongo

2.1 導(dǎo)入pymongo并選擇要操作的集合

數(shù)據(jù)庫和集合能夠自動創(chuàng)建

2.1.1 無需權(quán)限認證的方式創(chuàng)建連接對象以及集合操作對象
from pymongo import MongoClient

client = MongoClient(host,port) # 如果是本地連接host,port參數(shù)可以省略

collection = client[db名][集合名]
  
  
# collection = client.db名.集合名 # 與上邊用法相同
  
  
2.1.2 需要權(quán)限認證的方式創(chuàng)建連接對象以及集合操作對象
from pymongo import MongoClient
from urllib.parse import quote_plus

user = 'python' # 賬號
password = 'python' # 密碼
host = '127.0.0.1' # host
port = 27017 # port
uri = "mongodb://%s:%s@%s" % (quote_plus(user),
                              quote_plus(password),
                              host)
  
  
# quote_plus函數(shù):對url進行編碼
  
  
  
  
# uri = mongodb://python:python@127.0.0.1
  
  
client = MongoClient(uri, port=port)
collection = client.db名.集合名

2.2 insert()添加數(shù)據(jù)

insert可以批量的插入數(shù)據(jù)列表,也可以插入一條數(shù)據(jù)

collection.insert({一條數(shù)據(jù)})
collection.insert([{數(shù)據(jù)一},{數(shù)據(jù)二}])
2.2.1 添加一條數(shù)據(jù)

返回插入數(shù)據(jù)的_id

ret = collection.insert({"name":"test10010","age":33})
print(ret)
2.2.2 添加多條數(shù)據(jù)

返回ObjectId對象構(gòu)成的列表

item_list = [{"name":"test1000{}".format(i)} for i in range(10)]
rets = collection.insert(item_list)
print(rets)
for ret in rets:
    print(ret)

2.3 find_one()查找一條數(shù)據(jù)

接收一個字典形式的條件菠红,返回字典形式的整條數(shù)據(jù) 如果條件為空第岖,則返回第一條

ret = client.test.test.find_one({'name': 'test10001'})
print(ret) # 包含mongodb的ObjectId對象的字典
_ = ret.pop('_id') # 清除mongodb的ObjectId對象的k,v
print(ret)

2.4 find()查找全部數(shù)據(jù)

返回所有滿足條件的結(jié)果,如果條件為空试溯,則返回全部 結(jié)果是一個Cursor游標(biāo)對象蔑滓,是一個可迭代對象,可以類似讀文件的指針遇绞,但是只能夠進行一次讀取

rets = collection.find({"name":"test10005"})键袱,
for ret in rets:
    print(ret)
for ret in rets: #此時rets中沒有內(nèi)容
    print(ret)

2.5 update()更新數(shù)據(jù)(全文檔覆蓋或指定鍵值,更新一條或多條)

  • 語法:collection.update({條件}, {'$set':{指定的kv或完整的一條數(shù)據(jù)}}, multi=False/True, upsert=False/True)
  • multi參數(shù):默認為False,表示更新一條; multi=True則更新多條; multi參數(shù)必須和$set一起使用
  • upsert參數(shù):默認為False; upsert=True則先查詢是否存在,存在則更新;不存在就插入
  • $set表示指定字段進行更新
2.5.1 更新一條數(shù)據(jù)摹闽;全文檔覆蓋蹄咖;存在就更新,不存在就插入
data = {'msg':'這是一條完整的數(shù)據(jù)1','name':'哈哈'}
client.test.test.update({'haha': 'heihei'}, {'$set':data}, upsert=True)
2.5.2 更新多條數(shù)據(jù)付鹿;全文檔覆蓋澜汤;存在就更新,不存在就插入
data = {'msg':'這是一條完整的數(shù)據(jù)2','name':'哈哈'} # 該完整數(shù)據(jù)是先查詢后獲取的
client.test.test.update({}, {'$set':data}, multi=True, upsert=True)
2.5.3 更新一條數(shù)據(jù)舵匾;指定鍵值俊抵;存在就更新,不存在就插入
data = {'msg':'指定只更新msg___1'}
client.test.test.update({}, {'$set':data}, upsert=True)
2.5.4 更新多條數(shù)據(jù)坐梯;指定鍵值徽诲;存在就更新,不存在就插入
data = {'msg':'指定只更新msg___2'}
client.test.test.update({}, {'$set':data}, multi=True, upsert=True)

2.6 delete_one()刪除一條數(shù)據(jù)

collection.delete_one({"name":"test10010"})

2.7 delete_many()刪除全部數(shù)據(jù)

collection.delete_many({"name":"test10010"})

3. pymongo模塊其他api

查看pymongo官方文檔或源代碼 [

小結(jié)

  1. 掌握pymongo的增刪改查的使用
  2. 掌握權(quán)限認證的方式使用pymongo模塊

scrapy爬蟲框架

介紹

我們知道常用的流程web框架有django烛缔、flask馏段,那么接下來,我們會來學(xué)習(xí)一個全世界范圍最流行的爬蟲框架scrapy

內(nèi)容

  • scrapy的概念作用和工作流程
  • scrapy的入門使用
  • scrapy構(gòu)造并發(fā)送請求
  • scrapy模擬登陸
  • scrapy管道的使用
  • scrapy中間件的使用
  • scrapy_redis概念作用和流程
  • scrapy_redis原理分析并實現(xiàn)斷點續(xù)爬以及分布式爬蟲
  • scrapy_splash組件的使用
  • scrapy的日志信息與配置
  • scrapyd部署scrapy項目

scrapy官方文檔

[

scrapy的概念和流程

學(xué)習(xí)目標(biāo):
  1. 了解 scrapy的概念
  2. 了解 scrapy框架的作用
  3. 掌握 scrapy框架的運行流程
  4. 掌握 scrapy中每個模塊的作用

1. scrapy的概念

Scrapy是一個Python編寫的開源網(wǎng)絡(luò)爬蟲框架践瓷。它是一個被設(shè)計用于爬取網(wǎng)絡(luò)數(shù)據(jù)院喜、提取結(jié)構(gòu)性數(shù)據(jù)的框架。

Scrapy 使用了Twisted['tw?st?d]異步網(wǎng)絡(luò)框架晕翠,可以加快我們的下載速度喷舀。

Scrapy文檔地址:[

2. scrapy框架的作用

少量的代碼,就能夠快速的抓取

3. scrapy的工作流程

3.1 回顧之前的爬蟲流程

3.2 上面的流程可以改寫為

3.3 scrapy的流程

其流程可以描述如下:
  1. 爬蟲中起始的url構(gòu)造成request對象-->爬蟲中間件-->引擎-->調(diào)度器
  2. 調(diào)度器把request-->引擎-->下載中間件--->下載器
  3. 下載器發(fā)送請求淋肾,獲取response響應(yīng)---->下載中間件---->引擎--->爬蟲中間件--->爬蟲
  4. 爬蟲提取url地址硫麻,組裝成request對象---->爬蟲中間件--->引擎--->調(diào)度器,重復(fù)步驟2
  5. 爬蟲提取數(shù)據(jù)--->引擎--->管道處理和保存數(shù)據(jù)
注意:
  • 圖中中文是為了方便理解后加上去的
  • 圖中綠色線條的表示數(shù)據(jù)的傳遞
  • 注意圖中中間件的位置樊卓,決定了其作用
  • 注意其中引擎的位置拿愧,所有的模塊之前相互獨立,只和引擎進行交互

3.4 scrapy的三個內(nèi)置對象

  • request請求對象:由url method post_data headers等構(gòu)成
  • response響應(yīng)對象:由url body status headers等構(gòu)成
  • item數(shù)據(jù)對象:本質(zhì)是個字典

3.5 scrapy中每個模塊的具體作用

注意:
  • 爬蟲中間件和下載中間件只是運行邏輯的位置不同碌尔,作用是重復(fù)的:如替換UA等

小結(jié)

  1. scrapy的概念:Scrapy是一個為了爬取網(wǎng)站數(shù)據(jù)浇辜,提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架

  2. scrapy框架的運行流程以及數(shù)據(jù)傳遞過程:

    1. 爬蟲中起始的url構(gòu)造成request對象-->爬蟲中間件-->引擎-->調(diào)度器
    2. 調(diào)度器把request-->引擎-->下載中間件--->下載器
    3. 下載器發(fā)送請求券敌,獲取response響應(yīng)---->下載中間件---->引擎--->爬蟲中間件--->爬蟲
    4. 爬蟲提取url地址,組裝成request對象---->爬蟲中間件--->引擎--->調(diào)度器柳洋,重復(fù)步驟2
    5. 爬蟲提取數(shù)據(jù)--->引擎--->管道處理和保存數(shù)據(jù)
  3. scrapy框架的作用:通過少量代碼實現(xiàn)快速抓取

  4. 掌握scrapy中每個模塊的作用: 引擎(engine):負責(zé)數(shù)據(jù)和信號在不腰痛模塊間的傳遞 調(diào)度器(scheduler):實現(xiàn)一個隊列待诅,存放引擎發(fā)過來的request請求對象 下載器(downloader):發(fā)送引擎發(fā)過來的request請求,獲取響應(yīng)熊镣,并將響應(yīng)交給引擎 爬蟲(spider):處理引擎發(fā)過來的response卑雁,提取數(shù)據(jù),提取url绪囱,并交給引擎 管道(pipeline):處理引擎?zhèn)鬟f過來的數(shù)據(jù)测蹲,比如存儲 下載中間件(downloader middleware):可以自定義的下載擴展,比如設(shè)置ip 爬蟲中間件(spider middleware):可以自定義request請求和進行response過濾毕箍,與下載中間件作用重復(fù)


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末弛房,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子而柑,更是在濱河造成了極大的恐慌文捶,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件媒咳,死亡現(xiàn)場離奇詭異粹排,居然都是意外死亡,警方通過查閱死者的電腦和手機涩澡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進店門顽耳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妙同,你說我怎么就攤上這事射富。” “怎么了粥帚?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵胰耗,是天一觀的道長。 經(jīng)常有香客問我芒涡,道長柴灯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任费尽,我火速辦了婚禮赠群,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘旱幼。我一直安慰自己查描,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冬三,像睡著了一般鸯两。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上长豁,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天,我揣著相機與錄音忙灼,去河邊找鬼匠襟。 笑死,一個胖子當(dāng)著我的面吹牛该园,可吹牛的內(nèi)容都是我干的酸舍。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼里初,長吁一口氣:“原來是場噩夢啊……” “哼啃勉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起双妨,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤淮阐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后刁品,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泣特,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年挑随,在試婚紗的時候發(fā)現(xiàn)自己被綠了状您。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡兜挨,死狀恐怖膏孟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拌汇,我是刑警寧澤柒桑,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布,位于F島的核電站担猛,受9級特大地震影響幕垦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜傅联,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一先改、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蒸走,春花似錦仇奶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岛抄。三九已至,卻和暖如春狈茉,著一層夾襖步出監(jiān)牢的瞬間夫椭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工氯庆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蹭秋,地道東北人。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓堤撵,卻偏偏與公主長得像仁讨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子实昨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,576評論 2 349

推薦閱讀更多精彩內(nèi)容