知乎,與世界分享你剛編好的故事.......mongodb
今天我們就爬取一下知乎文章上面的圖片,忽然發現知乎上面的小姐姐圖片仍是挺好看的數據庫
版本:Python3編程
系統:Windowsjson
相關模塊:requestsbash
儲存:MongoDB工具
本人對於Python學習建立了一個小小的學習圈子,爲各位提供了一個平臺,你們一塊兒來討論學習Python。歡迎各位到來 Python學習羣:960410445一塊兒討論視頻分享學習。Python是將來的發展方向,正在挑戰咱們的分析能力及對世界的認知方式,所以,咱們與時俱進,迎接變化,並不斷的成長,掌握Python核心技術,纔是掌握真正的價值所在。
導入pymongo,使用MongClient鏈接數據庫,鏈接到myinfo數據庫學習
insert,insert_one()只能插入一條數據,插入多條數據的格式是db.user.insert([{條數1},{條數2}]),必定要加[],不然只會添加進去第一條(user是一個集合,除了用db["collection"]外也能夠用db.collection來對集合進行操做ui
update,$set:更新操做,multi=True:是否對查詢到的所有數據進行操做,upsert=True:若是找不到查詢的結果是否插入一條數據編碼
db.user.update_one({"age":"2"},{"$set":{"name":"qian","age":2}})
db.user.update({"name":"sun"},{"$set":{"name":"qian"}},upsert=True)
複製代碼
update_one也是隻能對一條數據進行操做,$set是update操做的$操做符,也能夠用$inc或$push,前兩個操做速度差很少,$push操做速度較慢。spa
打印出查詢結果
from bson import json_util as jsonb
print(jsonb.dumps(list(db.user.find({"name":"wu"}))))
print(db.user.find({"name":"wu"}))
能夠看到上面兩種方式,不轉換與轉換後的結果對好比下:
複製代碼
*jsonb.dumps()將查詢出來的結果轉換成了能夠讀的list的格式,不然打印出來的是<pymongo.cursor.Cursor object at 0x02096DF0>這種格式的
遍歷col1=db.user.find()查詢到的全部結果,以及它key=name的value
for i in col1:
print(i)
print(i["name"])
複製代碼
爬取使用requests 存儲使用 mongodb 就能夠了
爬取地址通過分析以後,找到了一個能夠返回json的數據接口
提取連接,方便咱們程序模擬,鏈接進行了URL編碼,去找個解碼工具解析一下,編程下面的URL就比較好解釋了,answers後面跟了一堆的參數,應該是返回的關鍵字,找到limit每頁顯示的數據量,offset偏移量,咱們下拉滾動條,發現這個在不斷的疊加+5,sort_by 就是排序。
作好上面的工做,接下來就是爬取了,我簡化了一下爬取的地址,只保留了一些關鍵的信息
運行結果爲