前言
知乎,與世界分享你剛編好的故事.......
今天我們們就爬取一下知乎文章上面的圖片,突然發現知乎上面的小姐姐圖片還是挺好看的
基本環境配置
版本:Python3
系統:Windows
相關模組:requests
儲存:MongoDB
本人對於Python學習建立了一個小小的學習圈子,為各位提供了一個平臺,大家一起來討論學習Python。歡迎各位到來Python學習群:960410445一起討論視訊分享學習。Python是未來的發展方向,正在挑戰我們的分析能力及對世界的認知方式,因此,我們與時俱進,迎接變化,並不斷的成長,掌握Python核心技術,才是掌握真正的價值所在。
關於pymongo的一些操作
匯入pymongo,使用MongClient連線資料庫,連線到myinfo資料庫
insert,insert_one()只能插入一條資料,插入多條資料的格式是db.user.insert([{條數1},{條數2}]),一定要加[],否則只會新增進去第一條(user是一個集合,除了用db["collection"]外也可以用db.collection來對集合進行操作
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操作速度較慢。
列印出查詢結果
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 就是排序。
做好上面的工作,接下來就是爬取了,我簡化了一下爬取的地址,只保留了一些關鍵的資訊
知乎文章圖片程式碼
執行結果為