一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python網(wǎng)絡(luò)爬蟲實戰(zhàn)之Fiddler抓包今日頭條app!附代碼

 yaohbsg 2020-07-25

前文中我們通過理論講解和三個爬蟲實例構(gòu)建了一個比較完整的爬蟲知識框架,而這三個實例有一個特點就是都是網(wǎng)頁端爬蟲,本文借助Fildder軟件和Python實現(xiàn)對手機app進行抓包的爬蟲程序,使得app的數(shù)據(jù)也無所遁形!

一、Fiddler介紹

1.Fiddler簡介

Fiddler是一個http協(xié)議調(diào)試代理工具,它能夠記錄并檢查所有你的電腦和互聯(lián)網(wǎng)之間的http通訊,設(shè)置斷點,查看所有的“進出”Fiddler的數(shù)據(jù)(指cookie,html,js,css等文件)。Fiddler 要比其他的網(wǎng)絡(luò)調(diào)試器要更加簡單,因為它不僅僅暴露http通訊還提供了一個用戶友好的格式。

通俗來講,F(xiàn)iddler 的工作原理相當(dāng)于一個代理,配置好以后,我們從手機 App 發(fā)送的請求會由 Fiddler 發(fā)送出去,服務(wù)器返回的信息也會由 Fiddler 中轉(zhuǎn)一次。所以通過 Fiddler 我們就可以看到 App 發(fā)給服務(wù)器的請求以及服務(wù)器的響應(yīng)了。

Python網(wǎng)絡(luò)爬蟲實戰(zhàn)之Fiddler抓包今日頭條app!附代碼

2.FiddlerPC端配置

我們安裝好 Fiddler 后,首先在菜單 Tool>Options>Https 下面的這兩個地方選上。

Python網(wǎng)絡(luò)爬蟲實戰(zhàn)之Fiddler抓包今日頭條app!附代碼

然后在 Connections 標(biāo)簽頁下面勾選上 Allow remote computers to connect,允許 Fiddler 接受其他設(shè)備的請求。

Python網(wǎng)絡(luò)爬蟲實戰(zhàn)之Fiddler抓包今日頭條app!附代碼

同時要記住這里的端口號,默認是 8888,到時候需要在手機端填。配置完畢,保存后,一定關(guān)掉 Fiddler 重新打開。

3.Fiddler手機端配置

首先按win R鍵輸入cmd打開,輸入命令ipconfig查看IP地址:

Python網(wǎng)絡(luò)爬蟲實戰(zhàn)之Fiddler抓包今日頭條app!附代碼

打開手機無線連接,選擇要連接的熱點。長按選擇修改網(wǎng)絡(luò),在代理中填上我們電腦的 IP 地址和 Fiddler 代理的端口。如下圖所示:

Python網(wǎng)絡(luò)爬蟲實戰(zhàn)之Fiddler抓包今日頭條app!附代碼
Python網(wǎng)絡(luò)爬蟲實戰(zhàn)之Fiddler抓包今日頭條app!附代碼

保存后,在手機默認瀏覽器(即手機自帶瀏覽器)中打開上文查詢到的ip地址http://192.168.0.106:8888視自身情況而定)。

Python網(wǎng)絡(luò)爬蟲實戰(zhàn)之Fiddler抓包今日頭條app!附代碼

之后點擊上述藍色鏈接并安裝到手機就可以進一步的使用電腦代理監(jiān)控了。

Python網(wǎng)絡(luò)爬蟲實戰(zhàn)之Fiddler抓包今日頭條app!附代碼

二、今日頭條app抓包實戰(zhàn)

1.源代碼獲取

首先我們在上述配置環(huán)境下打開手機今日頭條app,并搜索“疫情”

Python網(wǎng)絡(luò)爬蟲實戰(zhàn)之Fiddler抓包今日頭條app!附代碼

之后可在Fildder中觀察到彈出諸多條目,通過查看和經(jīng)驗篩選發(fā)現(xiàn)帶有search的url即為我們所求,雙擊這條URL,可以進一步獲取到requests urlclient(即我們的客戶端請求頭)

Python網(wǎng)絡(luò)爬蟲實戰(zhàn)之Fiddler抓包今日頭條app!附代碼

略微梳理一下就可以得到當(dāng)前請求的代碼:

import requestsimport timefrom bs4 import BeautifulSoupimport pandas as pdimport jsonimport randomfrom requests.packages.urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning) head = {'Accept': '*/*','Accept-Encoding': 'gzip,deflate','Accept-Language': 'zh-CN,en-US;q=0.8','User-Agent': 'Mozilla/5.0 (Linux; Android 7.0; HUAWEI CAZ-AL10 Build/HUAWEICAZ-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36 JsSdk/2 NewsArticle/7.0.1 NetType/wifi','X-Requested-With': 'com.ss.android.article.news'} url = 'https://is-lq./search/?keyword=...'req = requests.get(url=url, headers=head,verify=False).json()

2.json提取

接下來我們的任務(wù)就在于分析響應(yīng)的json文件,通過req.keys()命令獲取鍵信息,注意查找,發(fā)現(xiàn)在key為scripts的value中包含文章的所有信息,而值為Javascript代碼字符串,因此通過Beautiful庫進行解析:

soup = BeautifulSoup(req['scripts'],'lxml')
contents = soup.find_all('script',attrs={'type':'application/json'})
res = []for content in contents:js = json.loads(content.contents[0])
    abstract = js['abstract']
    article_url = js['article_url']
    comment_count = js['comment_count']
    raw_title = js['display']['emphasized']['title']
    title = raw_title.replace('<em>','').replace('</em>','')
    source = js['display']['emphasized']['source']
    data = {'title':title,'article_url':article_url,'abstract':abstract,'comment_count':comment_count,'source':source}
    res.append(data)

3.信息存儲

在相關(guān)文章信息提取完之后即可選擇信息存儲方式,我們通常采用json、csv、xlsx等格式進行存儲:

def write2excel(result): json_result = json.dumps(result) with open('article.json','w') as f: f.write(json_result) with open('article.json','r') as f:data = f.read() data = json.loads(data) df = pd.DataFrame(data,columns=['title','article_url','abstract','comment_count','source']) df.to_excel('article.xlsx',index=False)

4.自動化爬蟲構(gòu)建

最后一步,也就是找到翻頁規(guī)律,完成自動化爬蟲構(gòu)建。我們在搜索出的結(jié)果頁依次用手向下滑動,發(fā)現(xiàn)繼續(xù)彈出search的url,觀察下圖:

Python網(wǎng)絡(luò)爬蟲實戰(zhàn)之Fiddler抓包今日頭條app!附代碼

觀察這些url,發(fā)現(xiàn)僅僅在offset這個參數(shù)有所區(qū)別,而且是10的倍數(shù),因此我們的翻頁循環(huán)代碼為:

def get_pages(keyword,page_n):
  res_n = []
  for page_id in range(page_n):page = get_one_page(keyword = keyword,offset = str(page_id*10))res_n.extend(page)time.sleep(random.randint(1,10))
  return res_n

三、爬蟲總結(jié)

至此利用Fildder軟件結(jié)合python程序很容易的構(gòu)建了手機端app爬蟲程序,再通過此爬蟲總結(jié)一下:首先我們先安裝好Fildder軟件,并且同時配置好PC端和手機端代理,之后通過在手機上操作反饋到電腦端Fildder查看結(jié)果;進而通過Fildder抓包結(jié)果判斷請求具體參數(shù)和數(shù)據(jù)格式,之后對響應(yīng)的數(shù)據(jù)進行進一步的加工存儲就ok了。結(jié)果如下:

Python網(wǎng)絡(luò)爬蟲實戰(zhàn)之Fiddler抓包今日頭條app!附代碼

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产精品内射婷婷一级二级| 国产精品九九九一区二区| 亚洲av日韩av高潮无打码| 国产精品免费视频专区| 成人国产一区二区三区精品麻豆| 欧美日韩三区在线观看| 99久久国产精品成人观看| 久久国产精品亚州精品毛片| 久热在线视频这里只有精品| 午夜小视频成人免费看| 国产欧美日韩精品成人专区| 日本午夜免费观看视频| 国产级别精品一区二区视频| 国产主播精品福利午夜二区| 欧美日韩乱码一区二区三区| 亚洲精品伦理熟女国产一区二区 | 最近中文字幕高清中文字幕无| 99久久免费中文字幕| 精品推荐久久久国产av| 久久99国产精品果冻传媒| 91久久精品国产成人| 欧美不卡午夜中文字幕| 人妻中文一区二区三区| 日本人妻精品中文字幕不卡乱码| 欧美一区二区三区视频区| 亚洲最新av在线观看| 亚洲伦片免费偷拍一区| 91欧美日韩国产在线观看 | 欧美精品一区二区三区白虎| 日韩精品在线观看一区| 国产肥女老熟女激情视频一区| 久久大香蕉一区二区三区| 免费性欧美重口味黄色| 色婷婷丁香激情五月天| av国产熟妇露脸在线观看| 亚洲中文字幕在线观看四区| 欧美日韩综合免费视频| 亚洲天堂男人在线观看| 亚洲成人免费天堂诱惑| 好骚国产99在线中文| 亚洲国产精品无遮挡羞羞|