新手爬蟲教程:Python爬取知乎文章中的圖片

前言

知乎,與世界分享你剛編好的故事.......mongodb

今天我們就爬取一下知乎文章上面的圖片,忽然發現知乎上面的小姐姐圖片仍是挺好看的數據庫

基本環境配置

版本:Python3編程

系統:Windowsjson

相關模塊:requestsbash

儲存:MongoDB工具

本人對於Python學習建立了一個小小的學習圈子,爲各位提供了一個平臺,你們一塊兒來討論學習Python。歡迎各位到來 Python學習羣:960410445一塊兒討論視頻分享學習。Python是將來的發展方向,正在挑戰咱們的分析能力及對世界的認知方式,所以,咱們與時俱進,迎接變化,並不斷的成長,掌握Python核心技術,纔是掌握真正的價值所在。 

關於pymongo的一些操做

新手爬蟲教程:Python爬取知乎文章中的圖片

導入pymongo,使用MongClient鏈接數據庫,鏈接到myinfo數據庫學習

新手爬蟲教程:Python爬取知乎文章中的圖片

insert,insert_one()只能插入一條數據,插入多條數據的格式是db.user.insert([{條數1},{條數2}]),必定要加[],不然只會添加進去第一條(user是一個集合,除了用db["collection"]外也能夠用db.collection來對集合進行操做ui

新手爬蟲教程:Python爬取知乎文章中的圖片

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"}))
能夠看到上面兩種方式,不轉換與轉換後的結果對好比下:
複製代碼
新手爬蟲教程:Python爬取知乎文章中的圖片

*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"])
複製代碼

知乎文章圖片選取操做庫和爬取地址

新手爬蟲教程:Python爬取知乎文章中的圖片

爬取使用requests 存儲使用 mongodb 就能夠了

爬取地址通過分析以後,找到了一個能夠返回json的數據接口

新手爬蟲教程:Python爬取知乎文章中的圖片

提取連接,方便咱們程序模擬,鏈接進行了URL編碼,去找個解碼工具解析一下,編程下面的URL就比較好解釋了,answers後面跟了一堆的參數,應該是返回的關鍵字,找到limit每頁顯示的數據量,offset偏移量,咱們下拉滾動條,發現這個在不斷的疊加+5,sort_by 就是排序。

作好上面的工做,接下來就是爬取了,我簡化了一下爬取的地址,只保留了一些關鍵的信息

知乎文章圖片代碼

新手爬蟲教程:Python爬取知乎文章中的圖片

運行結果爲

新手爬蟲教程:Python爬取知乎文章中的圖片
相關文章
相關標籤/搜索