python 爬蟲(十二)MongoDB詳解(安裝 + 介紹 + MongoDB庫和集合的介紹(相關命令:創建 + 刪除)) + 爬蟲中分頁的兩種方法

注意:
爬取網站的流程:

  1. 確定網站哪個url是數據的來源。
  2. 簡要分析一下網站結構,查看數據一般放在哪裏。
  3. 發送請求requests,查看response.text裏面是否有我們想要的數據內容。
  4. 如果有數據,就用相應的提取數據的方法提取數據保存。
  5. 如果沒有,我們就可以通過以下兩種方法來實現爬取:
    (1)分析數據來源,查看是否通過一些接口獲取到的頁面數據。(首推)
    如果沒有在頁面中返回數據,我們應該首先想到,數據有可能是從ajax接口中獲取的。
    分析接口的步驟:
    1.查看該接口返回的數據是否使我們想要的。
    2.重點查看該接口的請求參數。
    瞭解哪些請求參數是變化的以及他的變化規律。
    (2)selenium+phantomjs來獲取頁面內容。
  6. 查看是否有分頁,解決分頁的問題。

一、分頁的兩種方法


(1)for循環

for i in range(1,20):
		response = requests.get(url %i)

注意:這種方法只能用你知道最大頁的前提下。

(2)while True循環

	i =0 #初始頁碼
	while True:
		# print(2)
		json_str = get_conent(url.format(type_,i) ,headers =headers )
		print(json_str)
		#必須要制定跳出循環的邊界。
		if  json_str =='[]':
			# print(1)
			break
		json_data = json.loads(json_str)
		parse_json(json_data)

		i+=20

注意:這種情況是用在返回json數據的前提下,具體問題具體分析


二、mongo安裝



1. 路徑


注意:最重要的是指定路徑custom;路徑中不能包含中文和空格
修改爲C:\MongoDB\Server\3.4 方便操作


2. 環境變量


將下面的路徑配置到path中

C:\MongoDB\Server\3.4\bin

在這裏插入圖片描述


3. 驗證



打開cmd,輸出mongod

安裝後cmd命令行輸入mongod出現如下結果就代表安裝成功
在這裏插入圖片描述


4. 新建一個存放數據庫的文件夾


C:\MongoDB\Server\3.4\data\db

在這裏插入圖片描述
再新建db
在這裏插入圖片描述


5. 啓動mongo



注意:mongod啓動的是服務器

mongod --dbpath C:\MongoDB\Server\3.4\data\db

啓動成功:
在這裏插入圖片描述


三、將mongo配置成一個服務


注意:MongoDB默認端口號27017


1. 創建logs文件夾


路徑:C:\MongoDB\Server\3.4\data\logs在這裏插入圖片描述


2. 以管理員方式開啓cmd


在這裏插入圖片描述


3. 進入mongodb的bin文件夾下


在這裏插入圖片描述


4. 運行命令


mongod --bind_ip 0.0.0.0 --logpath C:\MongoDB\Server\3.4\data\logs\mango.log --logappend --dbpath C:\MongoDB\Server\3.4\data\db --port 27017 --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

4. 服務中啓動MongoDB


首次啓動服務

計算機右擊選擇管理,找到服務,輸入m回車,找到MongoDB,啓動服務
在這裏插入圖片描述


四、MongoDB啓動客戶端和服務器命令


mongod ------------啓動mongo服務器。

mongod --dbpath 數據存放的文件夾

mongo---------啓動一個客戶端。客戶端是用來做增上改查這些操作的。


五、MongoDB簡介


在這裏插入圖片描述
非關係型數據庫的出現
在這裏插入圖片描述
nosql提高網站性能
在這裏插入圖片描述
MongoDB保存的是最常用的數據

MongoDB數據存在硬盤(不常用)

redis數據存在內存(最常用)

mysql關係型數據庫(最不常用的數據)

緩存在web下是最常用的


1. 、mongodb 文檔數據庫


存儲的是文檔(Bson->json的二進制化).
如:{name:'zhangsan',age:'9'}

特點 : 內部執行引擎爲JS解釋器, 把文檔存儲成bson結構,在查詢時,轉換爲JS對象,並可以通過熟悉的js語法來操作.


2. mongo和傳統型數據庫的不同


  • 傳統型數據庫: 結構化數據, 定好了表結構後,每一行的內容,必是符合表結構的,就是說–列的個數,類型都一樣.
  • mongo文檔型數據庫: 表下的每篇文檔,都可以有自己獨特的結構(json對象都可以有自己獨特的屬性和值)
  • mongo數據庫和collection不用提前創建。(可以隱式創建。)

簡單來說mongo數據庫表結構不固定,一個文檔(類似於表)你可以寫入任意的字段,無約束(沒有固定的結構)。庫和表可以隱性創建:在你沒有真正創建庫和表,能寫入數據。

沒有固定的結構,如:

{name:"張三",age:19,sex:"男"}
而另一個文檔可以這樣寫:
{name:"李四"}
沒有固定的結構

3. mongodb數據庫bin目錄下的文件意義


在這裏插入圖片描述

文件 意義
bsondump.exe 導出bsondump結構
mongo.exe 客戶端
mongod.exe 服務端
mongodump.exe 整體數據庫導出(備份工具)
mongoexport.exe 導出易識別的json文檔
mongofiles.exe GridFS工具,內建的分佈式文件系統
mongoimport.exe 數據導入程序
mongorestore.exe 數據恢復工具
mongos.exe 路由器(分片時使用)
mongostat.exe 監視程序


4. mongodb中對數據庫的描述及相關命令


  • 一個mongodb中可以建立多個數據庫。

  • MongoDB的默認數據庫爲"db",該數據庫存儲在data目錄中。

  • MongoDB的單個實例可以容納多個獨立的數據庫,每一個都有自己的集合和權限,不同的數據庫也放置在不同的文件中。

  • "show dbs" 命令可以顯示所有數據的列表。
    在這裏插入圖片描述

  • 執行 “db” 命令可以顯示當前數據庫對象或集合。
    在這裏插入圖片描述

  • 運行"use"命令,可以連接到一個指定的數據庫。
    在這裏插入圖片描述



5. MongoDB數據庫的命名規則


  • 不能是空字符串("")
  • 不得含有’ '(空格)、.、$、/、\和\0 (空字符)
  • 應全部小寫
  • 最多64字節

有一些數據庫名是保留的,可以直接訪問這些有特殊作用的數據庫。

  • admin: 從權限的角度來看,這是"root"數據庫。要是將一個用戶添加到這個數據庫,這個用戶自動繼承所有數據庫的權限。一些特定的服務器端命令也只能從這個數據庫運行,比如列出所有的數據庫或者關閉服務器。
  • local: 這個數據永遠不會被複制,可以用來存儲限於本地單臺服務器的任意集合
  • config: 當Mongo用於分片設置時,config數據庫在內部使用,用於保存分片的相關信息。

6. 文檔


文檔是一組 鍵值(key-value)對(即 BSON)。 MongoDB 的文檔不需要設置相同的字段,並且相同的字段不需要相同的數據類型,這與關係型數據庫有很大的區別,也是 MongoDB 非常突出的特點。(沒有固定的結構)
示例:

{,"name":"張三",age:"19"}

關係數據庫管理系統 RDBMS(Relational Database Management System)與 MongoDB 對應的術語:
在這裏插入圖片描述
需要注意的是:

  1. 文檔中的鍵/值對是有序的。
  2. 文檔中的值不僅可以是在雙引號裏面的字符串,還可以是其他幾種數據類型(甚至可以是整個嵌入的文檔)。
  3. MongoDB區分類型和大小寫。
  4. MongoDB的文檔不能有重複的鍵。
  5. 文檔的鍵是字符串。除了少數例外情況,鍵可以使用任意UTF-8字符。(我們在插入數據沒加""時,在查找出來會自動給我們加上引號,因爲鍵本身是字符串

7. 文檔鍵命名規範


  • 鍵不能含有\0 (空字符)。這個字符用來表示鍵的結尾。
  • .和$有特別的意義,只有在特定環境下才能使用。
  • 以下劃線"_"開頭的鍵是保留的(不是嚴格要求的)。

8. 集合(文檔組)


集合就是 MongoDB 文檔組,類似於 RDBMS (關係數據庫管理系統:Relational Database Management System)中的表格。

集合存在於數據庫中,集合沒有固定的結構,這意味着你在對集合可以插入不同格式和類型的數據,但通常情況下我們插入集合的數據都會有一定的關聯性。

{"name":"張三"}
{"name":"李四","age":10}
{"name":"王五","age":5,"sex":"男"}

注意:當第一個文檔插入時,集合就會被創建。


10. 集合名規則


  • 集合名不能是空字符串""。
  • 集合名不能含有\0字符(空字符),這個字符表示集合名的結尾。
  • 集合名不能以"system."開頭,這是爲系統集合保留的前綴。
  • 用戶創建的集合名字不能含有保留字符。有些驅動程序的確支持在集合名裏面包含,這是因爲某些系統生成的集合中包含該字符。除非你要訪問這種系統創建的集合,否則千萬不要在名字裏出現$。

11. MongoDB 數據類型


在這裏插入圖片描述


六、MongoDB創建庫和文檔以及他們的刪除


1. 庫的創建


(1)創建庫的第一種方法


Mongodb的庫是隱式創建,你可以use 一個不存在的庫,然後在該庫下創建collection,即可創建庫

  • 第一步use 庫名(隱性創庫)
  • 第二步db.createCollection(‘集合名’)(在該庫下面創建集合,就可以創建一個數據庫)在這裏插入圖片描述
    注意:這種方法在創建庫的同時也創建了一個集合。

(2)創建庫的第二種方法


  • 第一步:use 庫名
  • 第二步:db.collectionName(集合名).insert(document(文檔))在這裏插入圖片描述在這裏插入圖片描述

注意:這種方法不僅隱性創建了庫,同時也隱性創建了集合collection;並且集合中也插入了數據即文檔


2. 集合的創建


(1)庫不存在的時候創建

  • use 庫名
  • db.createCollection('collectionName(集合名)')在這裏插入圖片描述
    (2)庫存在的時候
    步驟同上,也是先進庫不同的是上面的方法也創建了庫
  • use 庫名
  • db.createCollection('collectionName(集合名)')在這裏插入圖片描述
    (3)直接插入數據順帶創建集合
  • use 庫名
  • db.stu(集合名).insert({"name":"張三"})
    這一方法即說明了在MongoDB中,collection也是可以隱身創建的

3. 刪除數據庫和集合


  • 刪除數據庫(必須進入庫)
use 庫名
db.dropDatabase()//刪除數據庫

在這裏插入圖片描述

  • 刪除集合(必須進入集合所在的庫)
use 庫名
db.collectionName(集合名).drop()//刪除集合

在這裏插入圖片描述
注意:唯一的集合刪除(刪除集合後庫中沒有集合了),庫也就刪除了


4. MongoDB的一些基本入門命令


  • db代表當前數據庫
    在這裏插入圖片描述
  • db.stu.find()查看錶的數據
    在這裏插入圖片描述
  • show dbs 查看當前的數據庫
    在這裏插入圖片描述
  • use databaseName(庫名) 選庫
    在這裏插入圖片描述
  • show collections 查看當前庫下的collection,也可以用show tables
    在這裏插入圖片描述

發佈了107 篇原創文章 · 獲贊 43 · 訪問量 7053
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章