mitmdump -s ******.py
# 抓取7个信息:课程名:name、课程简介:intro、讲师姓名:lecturer_name、讲师职业:lecturer_title、售价:price、课时数:phase_num、学习人数:learn_user_count
import json
import os
import sqlite3
from mitmproxy import ctx
# 定义SQList数据库名
db_path='igetget.sqlite'
# 如果数据库文件不存在,可创建该数据库,并命名为course_list的表
if not os.path.exists(db_path):
conn=sqlite3.connect(db_path)
# 获取sqlite3.Cursor对象
c=conn.cursor()
# 创建person表
c.execute("""CREATE TABLE course_list
(
name CHAR(50),
intro CHAR(50),
lecturer_name CHAR(100),
lecturer_title CHAR(50),
price INT,
phase_num INT,
learn_user_count INT
);
""")
conn.commit()
conn.close()
print('创建数据库成功')
# 打开数据库
conn=sqlite3.connect(db_path)
c=conn.cursor()
# 获取响应的mitmdump接口
def response(flow):
# 定义要处理的URL的前缀
url="https://entree-ali.igetget.com/label/v2/algo/product"
# 如果前缀符合,处理这个URL
if flow.request.url.startswith(url):
# 获取响应文本
text=flow.response.text
# 将响应文本转换为JSON对象
data=json.loads(text)
# 获取包含课程列表的对象
courses=data.get('c').get('product_list')
# 对课程进行迭代
for course in courses:
# 将要提取的信息保存到一个列表里
data=[
course.get('name'),
course.get('intro'),
course.get('lecturer_name'),
course.get('lecturer_title'),
course.get('price'),
course.get('phase_num'),
course.get('learn_user_count')
]
# 在控制台输出提取出的数据
ctx.log.info(str(data))
# 将数据插入course_list表
c.execute('INSERT INTO course_list VALUES(?,?,?,?,?,?,?)',data)
conn.commit()
mitmdump可以与Python结合编写实时的爬虫,这种方式更适合抓取App的数据,而且mitmweb工具可以实现可视化监听请求...