京东阅读校园版(汇云书舍)专为高校读者提供电子书畅读服务,拥有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. asio boost 异步错误处理_boost::ASIO的同步方式和异步方式
  2. 聊聊sentinel的SystemSlot
  3. [深入理解Android卷一全文-第九章]深入理解Vold和Rild
  4. Android内核开发:源码的版本与分支详解
  5. 【剑指offer】不使用新变量,交换两个变量的值,C++实现
  6. CTFshow php特性 web89
  7. ARIA and the value of challenge-led innovation
  8. SAP CRM呼叫中心和Hybris Commerce Backoffice的轮询设计
  9. 在Windows上使用Docker运行.NetCore
  10. linux 中将文件设置密码,linux – 如何使用公钥在openssl中加密大文件
  11. Spring Cloud 各个模块功能简介
  12. Git如何忽略已经上传的文件或文件夹?
  13. 东秦数模美赛校赛记录——紧急车辆位置.题目
  14. QQ自动登陆脚本生成器 v1.0
  15. 计算机快速录入,如何快速把书中的文字扫描并录入电脑
  16. R语言|Rstudio|初学笔记
  17. FX5U Socket通信
  18. mysql中SQL语句查询表字段名、注释、字段类型
  19. 个人奋斗动力源的一些感想
  20. win10 nas搭建_零起步自建家用NAS

热门文章

  1. 蚌埠计算机二级报名时间地点,2021年3月蚌埠市计算机二级报名时间|网上报名入口【12月29日开通】...
  2. 《金蝶ERP—K/3标准财务模拟实训(11.X版)》——导读
  3. OpenCV 无法启动此程序,因为计算机中丢失opencv_core249.dll(类似的),解决方法
  4. FL Studio21中文版编曲音乐宿主软件
  5. 不能对Revit插件进行强签名
  6. uni-App出现乱码
  7. 怎么把PDF文件转换成CAD格式
  8. AB变频器常见故障的原因
  9. ODOO 用户默认头像-怎么设置的默认头像
  10. 11.面向对象设计笔记