京东阅读校园版(汇云书舍)专为高校读者提供电子书畅读服务,拥有20万正版数字图书资源。App内有很多有质量的学习书籍供免费阅读。下面通过抓取其App上的电子书信息

1.爬取目标

我的爬取目标是App内计算机板块的电子书信息,并将其保存到MongoDB,如图1所示

把图书的名称、作者、字数、上架时间、简介爬取下来,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电子书信息相关推荐

  1. Python3网络爬虫开发实战,Appium+mitmdump 爬取京东商品

    11.6 Appium+mitmdump 爬取京东商品 在前文中,我们曾经用 Charles 分析过京东商品的评论数据,但是可以发现其参数相当复杂,Form 表单有很多加密参数.如果我们只用 Char ...

  2. python爬虫之Scrapy介绍八——Scrapy-分布式(以爬取京东读书为示例)

    Scrapy-分布式(scrapy-redis)介绍 1 Scrapy-分布式介绍 1.1 Scrapy-redis工作原理 1.2 Scrapy-redis 安装和基本使用 1.2.1 安装 1.2 ...

  3. 爬虫项目实操三、用scrapy框架爬取豆瓣读书Top250的书名,出版信息和评分

    安装方法:Windows:在终端输入命令:pip install scrapy:mac:在终端输入命令:pip3 install scrapy,按下enter键,再输入cd Python,就能跳转到P ...

  4. Appium+mitmdump 爬取京东商品

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 py ...

  5. 网络爬虫之scrapy爬取某招聘网手机APP发布信息

    1 引言 过段时间要开始找新工作了,爬取一些岗位信息来分析一下吧.目前主流的招聘网站包括前程无忧.智联.BOSS直聘.拉勾等等.有段时间时间没爬取手机APP了,这次写一个爬虫爬取前程无忧手机APP岗位 ...

  6. scrapy爬取某招聘网手机APP发布信息

    1 引言 ​ 过段时间要开始找新工作了,爬取一些岗位信息来分析一下吧.目前主流的招聘网站包括前程无忧.智联.BOSS直聘.拉勾等等.有段时间时间没爬取手机APP了,这次写一个爬虫爬取前程无忧手机APP ...

  7. Python爬取CAP之家的APP推广信息数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  8. 爬取京东上商品的所有详细信息

    项目介绍 使用python抓取京东商城商品(以手机为例)的详细信息,并将相应的图片下载下载保存到本地. 爬取步骤 1.选取种子URL:http://list.jd.com/list.html?cat= ...

  9. Python实现爬取移动端网页版微博用户信息及(部分)粉丝和(部分)关注信息(一)

    电脑端网页版微博weibo.com的处理相对复杂,先从最简单的移动端weibo.cn开始.因为微博系统限制,移动端只能查看前20页关注和粉丝信息,所以对于关注或粉丝超过200的用户,只能获取部分粉丝和 ...

最新文章

  1. 显卡显存故障检测工具_【硬件资讯】1660super实锤!更换DDR6显存!带宽超1660ti!...
  2. JavaScript事件绑定的方法说明 收藏
  3. 机器人学习--University of Alberta自主机器人导航课
  4. wcf中的使用全双工通信(转)
  5. Oracle 在 多个Virtualbox 虚拟机间 跨不同物理宿主机进行通信
  6. 类进阶学习目标 java 1614957028
  7. 自定义cell的左侧滑动
  8. HDU 5934:Bomb(强连通缩点)
  9. 10用户账户控制只有否_写了10 年的代码,收藏了这 20 个代码生成框架!
  10. 票据纸张尺寸对照表_粉丝要求,这期整理一版平面设计必备各种尺寸知识(收藏版))...
  11. 帆软报表Tomcat 发布部署
  12. 马尔可夫链 以及 隐马尔可夫模型(HMM)
  13. 云片网短信模版自定义变量的替换内容
  14. 利用CouchDB未授权访问漏洞执行任意系统命令
  15. 人行征信中心提醒:不要随意授权征信查询!
  16. silverlight ajax调用,基于RIA的AJAX和Silverlight研究与应用
  17. 几个java小问题代码(大神不喜勿喷)
  18. Windows查看ios手机日志
  19. 多网卡情况,使用静态路由,为访问目标网络指定路径
  20. Multisim的使用及面包板

热门文章

  1. 实体类多层嵌套 遍历_多层嵌套的json数据
  2. springboot酒店宾馆管理系统、、
  3. 穆迪分析在Chartis信用风险报告中被评为类别领导者
  4. IE-LAB网络实验室:更加智能地管理SD-WAN最后一英里
  5. U 盘、移动硬盘 之 Unetbootin 工具
  6. window对象的方法
  7. Gradle Could not resolve org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72.
  8. 通达信自动交易系统接口定义
  9. 学习 Linux 内核书籍推荐
  10. 用c语言编写运动控制程序,运动控制卡C程序示例.docx