欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Python3爬蟲(chóng)實(shí)戰(zhàn)mitmdump爬取App電子書(shū)信息的操作流程

小編給大家分享一下Python3爬蟲(chóng)實(shí)戰(zhàn)mitmdump爬取App電子書(shū)信息的操作流程,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

為江干等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及江干網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、江干網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

mitmdump 爬取 “得到” App 電子書(shū)信息

“得到” App 是羅輯思維出品的一款碎片時(shí)間學(xué)習(xí)的 App,其官方網(wǎng)站為 https://www.igetget.com,App 內(nèi)有很多學(xué)習(xí)資源。不過(guò) “得到” App 沒(méi)有對(duì)應(yīng)的網(wǎng)頁(yè)版,所以信息必須要通過(guò) App 才可以獲取。這次我們通過(guò)抓取其 App 來(lái)練習(xí) mitmdump 的用法。

1. 爬取目標(biāo)

我們的爬取目標(biāo)是 App 內(nèi)電子書(shū)版塊的電子書(shū)信息,并將信息保存到 MongoDB,如圖 11-30 所示。

Python3爬蟲(chóng)實(shí)戰(zhàn)mitmdump爬取App電子書(shū)信息的操作流程

我們要把圖書(shū)的名稱(chēng)、簡(jiǎn)介、封面、價(jià)格爬取下來(lái),不過(guò)這次爬取的側(cè)重點(diǎn)還是了解 mitmdump 工具的用法,所以暫不涉及自動(dòng)化爬取,App 的操作還是手動(dòng)進(jìn)行。mitmdump 負(fù)責(zé)捕捉響應(yīng)并將數(shù)據(jù)提取保存。

2. 準(zhǔn)備工作

請(qǐng)確保已經(jīng)正確安裝好了 mitmproxy 和 mitmdump,手機(jī)和 PC 處于同一個(gè)局域網(wǎng)下,同時(shí)配置好了 mitmproxy 的 CA 證書(shū),安裝好 MongoDB 并運(yùn)行其服務(wù),安裝 PyMongo 庫(kù),具體的配置可以參考第 1 章的說(shuō)明。

3. 抓取分析

首先探尋一下當(dāng)前頁(yè)面的 URL 和返回內(nèi)容,我們編寫(xiě)一個(gè)腳本如下所示:

def response(flow):
    print(flow.request.url)
    print(flow.response.text)

這里只輸出了請(qǐng)求的 URL 和響應(yīng)的 Body 內(nèi)容,也就是請(qǐng)求鏈接和響應(yīng)內(nèi)容這兩個(gè)最關(guān)鍵的部分。腳本保存名稱(chēng)為 script.py。

接下來(lái)運(yùn)行 mitmdump,命令如下所示:

mitmdump -s script.py

打開(kāi) “得到” App 的電子書(shū)頁(yè)面,便可以看到 PC 端控制臺(tái)有相應(yīng)輸出。接著滑動(dòng)頁(yè)面加載更多電子書(shū),控制臺(tái)新出現(xiàn)的輸出內(nèi)容就是 App 發(fā)出的新的加載請(qǐng)求,包含了下一頁(yè)的電子書(shū)內(nèi)容。控制臺(tái)輸出結(jié)果示例如圖 11-31 所示。

Python3爬蟲(chóng)實(shí)戰(zhàn)mitmdump爬取App電子書(shū)信息的操作流程

圖 11-31 控制臺(tái)輸出

可以看到 URL 為 https://dedao.igetget.com/v3/discover/bookList 的接口,其后面還加了一個(gè) sign 參數(shù)。通過(guò) URL 的名稱(chēng),可以確定這就是獲取電子書(shū)列表的接口。在 URL 的下方輸出的是響應(yīng)內(nèi)容,是一個(gè) JSON 格式的字符串,我們將它格式化,如圖 11-32 所示。

Python3爬蟲(chóng)實(shí)戰(zhàn)mitmdump爬取App電子書(shū)信息的操作流程

圖 11-32 格式化結(jié)果

格式化后的內(nèi)容包含一個(gè) c 字段、一個(gè) list 字段,list 的每個(gè)元素都包含價(jià)格、標(biāo)題、描述等內(nèi)容。第一個(gè)返回結(jié)果是電子書(shū)《情人》,而此時(shí) App 的內(nèi)容也是這本電子書(shū),描述的內(nèi)容和價(jià)格也是完全匹配的,App 頁(yè)面如圖 11-33 所示。

Python3爬蟲(chóng)實(shí)戰(zhàn)mitmdump爬取App電子書(shū)信息的操作流程

圖 11-33 APP 頁(yè)面

這就說(shuō)明當(dāng)前接口就是獲取電子書(shū)信息的接口,我們只需要從這個(gè)接口來(lái)獲取內(nèi)容就好了。然后解析返回結(jié)果,將結(jié)果保存到數(shù)據(jù)庫(kù)。

4. 數(shù)據(jù)抓取

接下來(lái)我們需要對(duì)接口做過(guò)濾限制,抓取如上分析的接口,再提取結(jié)果中的對(duì)應(yīng)字段。

這里,我們修改腳本如下所示:

import json
from mitmproxy import ctx
def response(flow):
    url = 'https://dedao.igetget.com/v3/discover/bookList'
    if flow.request.url.startswith(url):
        text = flow.response.text
        data = json.loads(text)
        books = data.get('c').get('list')
        for book in books:
            ctx.log.info(str(book))

重新滑動(dòng)電子書(shū)頁(yè)面,在 PC 端控制臺(tái)觀察輸出,如圖 11-34 所示。

Python3爬蟲(chóng)實(shí)戰(zhàn)mitmdump爬取App電子書(shū)信息的操作流程

圖 11-34 控制臺(tái)輸出

現(xiàn)在輸出了圖書(shū)的全部信息,一本圖書(shū)信息對(duì)應(yīng)一條 JSON 格式的數(shù)據(jù)。

5. 提取保存

接下來(lái)我們需要提取信息,再把信息保存到數(shù)據(jù)庫(kù)中。方便起見(jiàn),我們選擇 MongoDB 數(shù)據(jù)庫(kù)。

腳本還可以增加提取信息和保存信息的部分,修改代碼如下所示:

import json
import pymongo
from mitmproxy import ctx
client = pymongo.MongoClient('localhost')
db = client['igetget']
collection = db['books']
def response(flow):
    global collection
    url = 'https://dedao.igetget.com/v3/discover/bookList'
    if flow.request.url.startswith(url):
        text = flow.response.text
        data = json.loads(text)
        books = data.get('c').get('list')
        for book in books:
            data = {'title': book.get('operating_title'),
                'cover': book.get('cover'),
                'summary': book.get('other_share_summary'),
                'price': book.get('price')
            }
            ctx.log.info(str(data))
            collection.insert(data)

重新滑動(dòng)頁(yè)面,控制臺(tái)便會(huì)輸出信息,如圖 11-35 所示。

Python3爬蟲(chóng)實(shí)戰(zhàn)mitmdump爬取App電子書(shū)信息的操作流程

圖 11-35 控制臺(tái)輸出

現(xiàn)在輸出的每一條內(nèi)容都是經(jīng)過(guò)提取之后的內(nèi)容,包含了電子書(shū)的標(biāo)題、封面、描述、價(jià)格信息。

最開(kāi)始我們聲明了 MongoDB 的數(shù)據(jù)庫(kù)連接,提取出信息之后調(diào)用該對(duì)象的 insert() 方法將數(shù)據(jù)插入到數(shù)據(jù)庫(kù)即可。

滑動(dòng)幾頁(yè),發(fā)現(xiàn)所有圖書(shū)信息都被保存到 MongoDB 中,如圖 11-36 所示。

Python3爬蟲(chóng)實(shí)戰(zhàn)mitmdump爬取App電子書(shū)信息的操作流程

目前為止,我們利用一個(gè)非常簡(jiǎn)單的腳本把 “得到” App 的電子書(shū)信息保存下來(lái)。

看完了這篇文章,相信你對(duì)Python3爬蟲(chóng)實(shí)戰(zhàn)mitmdump爬取App電子書(shū)信息的操作流程有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)站欄目:Python3爬蟲(chóng)實(shí)戰(zhàn)mitmdump爬取App電子書(shū)信息的操作流程
網(wǎng)站地址:http://chinadenli.net/article8/iegjip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)App設(shè)計(jì)、域名注冊(cè)做網(wǎng)站、服務(wù)器托管響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)
日韩国产亚洲一区二区三区| 国产av一二三区在线观看| 国产熟女一区二区不卡| 亚洲欧美日韩在线看片| 国产成人精品国产成人亚洲| 欧美激情中文字幕综合八区| 日韩中文字幕欧美亚洲| 亚洲国产黄色精品在线观看| 国产在线一区中文字幕| 亚洲视频一级二级三级| 欧美日韩一级aa大片| 成人免费高清在线一区二区| 国产三级视频不卡在线观看| 日韩丝袜诱惑一区二区| 国产福利一区二区三区四区| 日韩不卡一区二区三区色图| 亚洲一区二区三区在线免费| 亚洲欧美日韩精品永久| 国产日韩久久精品一区| 亚洲男人的天堂就去爱| 小黄片大全欧美一区二区| 国产免费观看一区二区| 激情亚洲内射一区二区三区| 午夜亚洲精品理论片在线观看| 日韩亚洲精品国产第二页| 国产高清一区二区不卡| 欧美色婷婷综合狠狠爱| 久久大香蕉一区二区三区| 加勒比人妻精品一区二区| 日韩三级黄色大片免费观看| 亚洲二区欧美一区二区 | 又大又长又粗又黄国产| 日韩欧美高清国内精品| 色婷婷人妻av毛片一区二区三区 | 免费高清欧美一区二区视频| 久久热九九这里只有精品| 亚洲国产精品久久网午夜| 午夜精品福利视频观看| 欧美一区二区在线日韩| 国产欧美日韩精品一区二| 男女一进一出午夜视频|