前言
- 蛋肥這次想嘗試一下爬取APP的數(shù)據,作為一個萬年潛水的老Jr碌宴,這次選擇虎撲APP論美區(qū)照片作為爬取目標捏鱼,純屬出于學術研究,沒有其他目的(嘿嘿)胁附。
準備
爬取時間:2021/02/02
系統(tǒng)環(huán)境:Windows 10
所用工具:Jupyter Notebook\Python 3.0\Fiddler\雷神模擬器
涉及的庫:requests\json
獲取基礎數(shù)據
小提示
①模擬器不要用Android 7.0以上的內核酒繁,可能會導致抓包失敗。
②因為url簽名會定期刷新控妻,所以抓包后需盡快執(zhí)行代碼州袒,不然url會失效。
參考資料
使用fiddler+模擬器進行APP抓包
獲取url
蛋肥想法:原本計劃是利用Fiddler+雷神模擬器去完成數(shù)據抓包弓候,找到數(shù)據的url規(guī)律郎哭,但實際操作發(fā)現(xiàn),url里帶sign菇存,百度了下sign的處理方法夸研,感覺暫時超出了蛋肥的知識范圍,所以這次利用雷神模擬器自帶的“操作錄制”功能依鸥,將論美區(qū)的頁面自動下滑至底部亥至,將Fiddler抓取的所有相關url地址導出,然后再去python里處理url贱迟。
#處理Fiddler里導出的url
file=open(r"C:\Users\Archer\Desktop\url.txt","r",encoding='utf-8')
url_list=file.read().split("\n")
Fiddler抓取的部分url
獲取cover地址
蛋肥想法:通過url請求json姐扮,觀察json結構發(fā)現(xiàn)“cover”對應封面照片的地址,可用之獲取照片衣吠。
import requests
import json
#獲取cover地址
def getpic(url):
piclink=[]
for each in url:
link=each
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0"}
r=requests.get(link,headers=headers,timeout=10)
json_string=r.text
json_data=json.loads(json_string)
coverlist=json_data["data"]["list"]
for each in coverlist:
#因某些list里沒有cover茶敏,做一個判斷
if "cover" in each:
p=each["cover"]
piclink.append(p)
return(piclink)
#執(zhí)行函數(shù)
a=getpic(url_list)
#為了獲取原圖去掉url里的resize
b=[x[:x.find("?")] for x in a]
#去掉列表里的空值
c=[x for x in b if x != ""]
獲取照片
#獲取照片
def downloadpic(link):
for i in range(len(link)):
print(link[i])
piclink=link[i]
pic=requests.get(piclink)
with open(r'C:\Users\Archer\Desktop\論美區(qū)照片\img'+str(i)+'.png', 'wb') as f:
f.write(pic.content)
#執(zhí)行函數(shù)
downloadpic(c)
獲取的部分照片
總結
- 利用Fiddler可實現(xiàn)APP數(shù)據的爬取。
- 虎撲論美區(qū)網圖是真的多缚俏。