抓取目標:
我們的抓取目標是京東商城的App電子商品信息,並將信息保存到MongoDB數據庫中。
抓取商品信息的id號、標題、單價、評價條數等信息
准備工作和抓取分析
准備工作:
- 安裝app抓包工具Charles、mitmproxy。
- 配置網絡,確認手機和PC處於同一局域網下,並配置好代理服務
- 安裝證書,確保可以抓取HTTPS的請求信息。
- 安裝並開啟MongoDB數據庫。
抓取分析:
打開iCharles抓包工具,讓后使用手機打開京東App應用程序,讓后搜索電腦商品信息。
在抓包工具中獲取url地址:http://api.m.jd.com/client.action?functionId=search
抓取信息格式為json格式。具體如下圖所示
代碼編寫:
import json
#import pymongo
from mitmproxy import ctx
#連接MongoDB數據庫jddb,選擇集合shop
#client = pymongo.MongoClient('localhost')
#db = client['jddb']
#collection = db['shop']
def response(flow):
#global collection
url = 'http://api.m.jd.com/client.action?functionId=search'
if flow.request.url.startswith(url):
text = flow.response.text
data = json.loads(text)
shops = data.get('wareInfo')
for shop in shops:
item = {
'spuId': shop.get('spuId'),
'wname': shop.get('wname'),
'price': shop.get('jdPrice'),
'reviews': shop.get('reviews')
}
ctx.log.info(str(item))
#寫入MongoDB數據庫
#collection.insert(data)