mitmdump爬取京东读书校园版App电子书信息
京东阅读校园版(汇云书舍)专为高校读者提供电子书畅读服务,拥有20万正版数字图书资源。App内有很多有质量的学习书籍供免费阅读。下面通过抓取其App上的电子书信息
1.爬取目标
我的爬取目标是App内计算机板块的电子书信息,并将其保存到MongoDB,如图1所示
![](/assets/blank.gif)
把图书的名称、作者、字数、上架时间、简介爬取下来,App操作手动进行。mitmdump负责捕捉响应并将数据提取保存。
2.准备工作
安装好了mitmproxy和mitmdump,手机和PC处于同一个局域网下,同时配置好mitmproxy的CA证书,安装好Mongodb。
3.抓取分析
新建一个脚本文件命名为 script.py
首先试探当前页面的URL和返回内容 script.py :
def response(flow):print(flow.request.url)print(flow.response.text)
运行命令 mitmdump
mitmdump - s script.py
打开App电子书页面,pc端有相应输出如图2所示
URL为 https://tob-api.jd.com/tob/api/category/5307/ebook?
通过URL可以看出这就是获取电子书列表的接口。URL下方是响应内容,为JSON格式的字符串,将其格式化,如图3
格式化后的data字段下的name、info、author、word_count_desc、created_desc 即为所找内容
下面只需要通过接口获取想要的内容即可,然后解析返回结果,将结果保存到数据库。
4.数据获取、提取保存
接下来我们对接口做出过滤,抓取如上分析的接口,再提取结果中的对应字段
注:mitmproxy引入pymongo包会出现问题
所以曲线救国先将数据保存为txt文件,然后将txt文件读取保存到mongodb中
修改脚本如下:
#-*- coding: UTF-8 -*-
# @Time :19-1-27 上午11:04
# @Author :Zhou Chuang
from mitmproxy import ctx
import jsondef write_to_file(content):with open('result.txt', 'a', encoding='utf-8') as f:f.write(json.dumps(content, ensure_ascii=False) + '\n')def response(flow):url = 'https://tob-api.jd.com/tob/api/category/5307/ebook'if flow.request.url.startswith(url): # 如果以url开头的text = flow.response.textdata = json.loads(text)books = data.get('data').get('items')for book in books:data = {'bookname': book.get('name'),'author': book.get('author'),'words': book.get('word_count_desc'),'times': book.get('created_desc'),'info': book.get('info')}ctx.log.info(str(data))write_to_file(data)
通过insert()方法将数据插入到数据库
# @Time :19-1-27 下午9:50
# @Author :Zhou Chuang
import json
import pymongoclient = pymongo.MongoClient(host='localhost', port=27017)
db = client['test']
collection = db['jd_read']f = open('result.txt', 'r+')
for i in f.readlines():new = json.loads(i)collection.insert(new)
现在滑动手机,发现图书信息都被保存到了result.txt中,然后运行第二个脚本,发现所有的图书信息都被保存到MongoDB中,一共爬取了7513本书籍的信息,如图4:
mitmdump爬取京东读书校园版App电子书信息相关推荐
- Python3网络爬虫开发实战,Appium+mitmdump 爬取京东商品
11.6 Appium+mitmdump 爬取京东商品 在前文中,我们曾经用 Charles 分析过京东商品的评论数据,但是可以发现其参数相当复杂,Form 表单有很多加密参数.如果我们只用 Char ...
- python爬虫之Scrapy介绍八——Scrapy-分布式(以爬取京东读书为示例)
Scrapy-分布式(scrapy-redis)介绍 1 Scrapy-分布式介绍 1.1 Scrapy-redis工作原理 1.2 Scrapy-redis 安装和基本使用 1.2.1 安装 1.2 ...
- 爬虫项目实操三、用scrapy框架爬取豆瓣读书Top250的书名,出版信息和评分
安装方法:Windows:在终端输入命令:pip install scrapy:mac:在终端输入命令:pip3 install scrapy,按下enter键,再输入cd Python,就能跳转到P ...
- Appium+mitmdump 爬取京东商品
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 py ...
- 网络爬虫之scrapy爬取某招聘网手机APP发布信息
1 引言 过段时间要开始找新工作了,爬取一些岗位信息来分析一下吧.目前主流的招聘网站包括前程无忧.智联.BOSS直聘.拉勾等等.有段时间时间没爬取手机APP了,这次写一个爬虫爬取前程无忧手机APP岗位 ...
- scrapy爬取某招聘网手机APP发布信息
1 引言 过段时间要开始找新工作了,爬取一些岗位信息来分析一下吧.目前主流的招聘网站包括前程无忧.智联.BOSS直聘.拉勾等等.有段时间时间没爬取手机APP了,这次写一个爬虫爬取前程无忧手机APP ...
- Python爬取CAP之家的APP推广信息数据
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...
- 爬取京东上商品的所有详细信息
项目介绍 使用python抓取京东商城商品(以手机为例)的详细信息,并将相应的图片下载下载保存到本地. 爬取步骤 1.选取种子URL:http://list.jd.com/list.html?cat= ...
- Python实现爬取移动端网页版微博用户信息及(部分)粉丝和(部分)关注信息(一)
电脑端网页版微博weibo.com的处理相对复杂,先从最简单的移动端weibo.cn开始.因为微博系统限制,移动端只能查看前20页关注和粉丝信息,所以对于关注或粉丝超过200的用户,只能获取部分粉丝和 ...
最新文章
- 显卡显存故障检测工具_【硬件资讯】1660super实锤!更换DDR6显存!带宽超1660ti!...
- JavaScript事件绑定的方法说明 收藏
- 机器人学习--University of Alberta自主机器人导航课
- wcf中的使用全双工通信(转)
- Oracle 在 多个Virtualbox 虚拟机间 跨不同物理宿主机进行通信
- 类进阶学习目标 java 1614957028
- 自定义cell的左侧滑动
- HDU 5934:Bomb(强连通缩点)
- 10用户账户控制只有否_写了10 年的代码,收藏了这 20 个代码生成框架!
- 票据纸张尺寸对照表_粉丝要求,这期整理一版平面设计必备各种尺寸知识(收藏版))...
- 帆软报表Tomcat 发布部署
- 马尔可夫链 以及 隐马尔可夫模型(HMM)
- 云片网短信模版自定义变量的替换内容
- 利用CouchDB未授权访问漏洞执行任意系统命令
- 人行征信中心提醒:不要随意授权征信查询!
- silverlight ajax调用,基于RIA的AJAX和Silverlight研究与应用
- 几个java小问题代码(大神不喜勿喷)
- Windows查看ios手机日志
- 多网卡情况,使用静态路由,为访问目标网络指定路径
- Multisim的使用及面包板
热门文章
- 实体类多层嵌套 遍历_多层嵌套的json数据
- springboot酒店宾馆管理系统、、
- 穆迪分析在Chartis信用风险报告中被评为类别领导者
- IE-LAB网络实验室:更加智能地管理SD-WAN最后一英里
- U 盘、移动硬盘 之 Unetbootin 工具
- window对象的方法
- Gradle Could not resolve org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72.
- 通达信自动交易系统接口定义
- 学习 Linux 内核书籍推荐
- 用c语言编写运动控制程序,运动控制卡C程序示例.docx