文章      动态     相关文章     最新文章     手机版动态     相关动态     |   首页|会员中心收藏本页|保存桌面|手机浏览

s7u9m

http://ww.kub2b.com/coms7u9m/

今天是 5月22日 星期四 首页 > 文章中心
相关列表
文章列表
  • 暂无文章
推荐文章
Python实例 | 自动获取证监会新闻
发布时间:2024-12-16        浏览次数:19        返回列表

当下早已进入了移动互联网时代,传统互联网用户大多已转移到移动互联网上。移动互联网比传统互联网在使用上更加方便,特别在智能手机产业非常成熟的今天,人人都可以使用智能手机随时随地地接入网络,而以前则需要使用计算机才能做的事情,如今只靠小小的手机就可以很轻松地完成。

移动支付、移动出行、移动办公等早已改变了人们的生活方式。移动互联网的蓬勃发展,使其内容越来越丰富,内容质量越来越高。相比传统互联网上的信息,其时效性更强。抓取移动互联网上的内容进行分析,是非常有必要的。

移动互联网的技术栈与传统互联网的技术栈有比较大的区别,以前获取信息大多数使用浏览器即可完成,而在移动互联网中浏览器扮演的角色则没有传统互联网中那么重要,在移动互联网中大多数的信息操作及获取可以通过专用的App来完成,例如支付可以通过支付App来完成、订餐可以通过订餐App来完成、看视频可以通过视频App来完成。在手机上安装一个App比原来在计算机上安装软件要简单得多,通常只需简单的几步便可完成,无须进行复杂的配置,且专用App的内容在丰富度、使用体验上要比使用浏览器好得多,所以在移动互联网上App所占的比重要比浏览器所占的比重要高,且很多有价值的数据已经不在浏览器上展示了,只在专用App上进行展示,所以对App的数据爬取是非常有必要的。

传统互联网中可以非常轻松地获取的数据,如今在移动互联网下则需要发生一些变化,移动互联网目前流程的操作系统有iOS与Android两种,相较于iOS来讲Android操作系统更加开放,而通常情况下在两个不同操作系统上的App都会展示相同的内容,所以在分析App的时候,一般使用Android平台上的App进行分析。

不同类型的App与后端交互有不同的方式,常见的App与后端交互的方式包括通过HTTP协议使用JSON 或XML格式进行数据交换、通过socket协议使用二进制数据格式进行数据交换等。大多数以提供文本信息或者富文本信息内容的数据发布类App会选择使用HTTP协议用JSON 格式进行数据交互,例如大多数新闻类App。对于即时通信类App则会使用基于socket上的自定义协议进行数据交互。

Python实例 | 自动获取证监会新闻

对于大多数即时通信类App来讲,想要获取其有效的信息会比较困难,因为即时通信大多是点对点或者单点对多点及多点对多点进行消息的传递,其消息传递有排他性,如果不在同一个圈子内就无法收到有效信息。另外即时通信类App的消息传递有瞬时性,如果该消息在一定时间内没有接收并存储,则该消息将无法再次获取。此外即时通信类App大多使用基于socket协议之上定制的协议,协议格式及数据的加密方式都属于其公司内部机密,外部人员很难分析并掌握。

而数据发布类App则由于其数据价值高,且获取相对比较容易,使用的传输协议大多为HTTP,能够使用前面所学习过的爬虫技术,所以本书将会以数据发布类App作为主要案例进行App数据爬取的讲解。

1

分析App数据

以中国证监会App为案例进行数据爬取。首先准备一台WiFi正常的安卓手机,并保持手机的WiFi与计算机在同一局域网内。虽然也可以不在同一局域网内,但是不在同一局域网内会带来很多额外的麻烦。如果没有安卓手机也没关系,可以在计算机上使用安卓模拟器,安卓模拟器允许在计算机上运行安卓操作系统,并在系统内安装App。安卓模拟器除了不能打电话以外,其余的功能皆与真实手机一致。

首先需要在手机上安装中国证监会App,可以在各大应用市场搜索中国证监会,然后进行安装。如果所使用的安卓模拟器没有应用市场,则可以在计算机上下载一个应用市场APK,例如应用宝,然后拖动到安卓模拟器内进行安装,再在该应用市场下载并安装证监会的App。

图4-10 证监会App

该App的数据是由后台提供的,它是典型的数据发布类App,大胆猜测该App使用的是HTTP协议JSON 数据格式来完成数据交换的。要证实该猜测,可以通过对该App数据进行追踪来完成。

对于大多数数据发布类App来讲,其本身是不存储任何数据的。当把网络断掉以后,再去发起新的请求时,App不会再显示数据,也就是说App的数据来源大多是从远程服务器上获取的。其业务逻辑为用户向App请求新的数据,App会立即向远程服务器请求新的数据,如果使用的是HTTP协议,则会发起HTTP请求,并以JSON 的数据格式将必要的信息传递给远程服务器,例如会话信息。远程服务器收到App发送过来的请求信息后会立即响应,将App请求的信息组装起来同样以JSON 的方式传回App,这样就完成了一个数据传输的流程。

想要追踪App的数据,最好的方式就是在App与服务器通信的信道之间架设一个观察点,让所有的数据从观察点通过,这样就可以在不破坏任何数据或程序的情况下完成对数据的追踪和分析。

Fiddler就是这么一款数据追踪软件,该软件可以对HTTP及HTTPS协议的数据进行跟踪,Fiddler的官方网站为https://www.telerik.com/fiddler,如图4-11所示。

图4-11 Fiddler官网

Fiddler系列产品有很多种,这里选择Fiddler Everywhere,Fiddler Everywhere一款跨平台的免费的网络调试工具,与Fiddler Classic相比Fiddler Everywhere除了可以运行在Windows操作系统上,还可以运行在macOS及Linux操作系统上,且Fiddler Everywhere除了可以获取传输的信息以外,还可以直接在Fiddler Everywhere构造信息并提交信息以此进行请求测试。

单击Try Now按钮,在展开项单击Fiddler Everywhere进入Fiddler Everywhere下载页面,如图4-12所示。填写好邮箱、选择国家,勾选I accept the Fiddler End User LicenseAgreement后单击Download for Windows按钮即可下载Fiddler Everywhere。

图4-12 下载Fiddler Everywhere

下载好Fiddler Everywhere后进行安装,安装过程比较简单,这里就不再赘述了。安装好后打开Fiddler Everywhere,第一次使用时需要注册,单击Create Account按钮进行注册,注册好并登录以后,可以看到Fiddler Everywhere的界面,如图4-13所示。单击LiveTraffic右侧的开关,打开监测,此时Fiddler Everywhere会将当前计算机上所有通过HTTP及HTTPS协议请求的软件罗列出来。

图4-13 Fiddler Everywhere界面

单击列表中的请求链接,在右侧就会显示当前链接的详细信息,包括请求的头信息、返回的信息等。有很多软件会在后台运行,普通用户是看不见界面的。使用FiddlerEverywhere就可以列出所有前台或者后台请求的HTTP及HTTP协议。

此时需要分析的是证监会的App信息,将安卓模拟器打开,先不要打开证监会的App,如果此时打开App,则App会直接向证监会的服务器请求数据,这样我们就无法进行有效跟踪了,也无法抓取其有效数据了。这时需要让手机的网络通过计算机访问互联网,将计算机设置成代理服务器,也就是说App请求的数据将会先到达我们的计算机,然后由计算机再转发到远程服务器,通过计算机访问互联网后就可以在计算机端进行跟踪了。

在Fiddler Everywhere界面右侧有个齿轮图标,该图标为设置,单击“设置图标”打开Fiddler Everywhere的设置界面,单击Connections链接,进入Connections界面,在右侧会显示Fiddler Everywhere作为代理服务器的端口号,默认为8866,勾选Allow remotecomputers to connect,也就是允许远程计算机连接,如图4-14 所示。设置完毕后单击SAVE按钮,此时Fiddler Everywhere就设置成代理模式并等待手机的连接。

图4-14 设置Fiddler Everywhere代理

在进行下一步前,需要查看一下当前计算机的IP 地址,同时按快捷键WIN(键盘上Windows图标)+R呼出运行窗口,输入cmd命令并按回车键即可打开命令终端。在命令终端内输入ipconfig命令即可看到当前计算机的IP地址,例如192.168.3.39。记住这个IP地址,在安卓模拟器上设置代理时会用到。

图4-15 设置安卓模拟器的网络

设置完网络后,保持Fiddler Everywhere处于监听状态,即Live Traffic右侧的按钮处于开启状态,此时打开证监会App就可以看到App所请求的数据在Fiddler Everywhere上被捕获到了,如图4-16所示。正如之前猜测的那样,证监会的App使用的是HTTP协议,单击请求链接,会发现其数据交换的格式是JSON,与之前我们的猜测一致。

图4-16 证监会App请求的数据

在分析数据时,Fiddler Everywhere会将所有的HTTP及HTTPS协议列举出来,会对我们分析App的数据造成干扰,Fiddler Everywhere提供了筛选功能,可以将不需要的请求隐藏起来,只显示需要的请求数据。

例如证监会App请求的URL为http://www.csrc.gov.cn,单击Fiddler Everywhere列表页的漏斗图标,即Advanced Filters按钮,在弹出的窗口的Request Headers项将Host填写为www.csrc.gov.cn,也就是匹配请求头中Host等于www.csrc.gov.cn的请求列表。这样Fiddler Everywhere会将请求头中Host不为www.csrc.gov.cn的请求隐藏起来,以便于分析,如图4-17所示。

图4-17 过滤请求数据

能够被Fiddler Everywhere捕获的请求,要么使用的是HTTP 协议,要么使用的是HTTPS协议,这两种协议都可以通过浏览器进行请求。例如打开证监会App后,第1个请求的URL是http://www.csrc.gov.cn/pub/zjhapp/wz_4/wz_4_1/channels.json,将该请求通过浏览器打开,则会返回App的栏目链接数据,如图4-18所示。

图4-18 证监会App请求的数据

该链接作为App的根链接,是所有栏目、新闻的入口,可以通过遍历的方式将该链接的信息从头到尾遍历一遍,这样整个App的数据就都被爬取下来了。如果想要精准地获取新闻的数据,则可返回证监会App,保持App在新闻页面,将新闻向上多滑动几次,此时App会请求新的新闻列表,在Fiddler Everywhere中会被捕获,其多次请求的新闻列表地址如下:

http: //www.csrc.gov.cn/pub/zjhapp/wz_1/wz_1_1/next_7797_1.json

http: //www.csrc.gov.cn/pub/zjhapp/wz_1/wz_1_1/next_7797_2.json

http: //www.csrc.gov.cn/pub/zjhapp/wz_1/wz_1_1/next_7797_3.json

...

其规律表现为只有next_7797_x最后一位x会发生变化,且每次加1。这样就可以通过该规律获取其他新闻列表了。测试结果是该App的证监会要闻栏目新闻最多,支持10次列表的请求,每条列表中包含了20条新闻信息,总共200条新闻信息。

根据以上的分析原理,就可以很方便地使用Python对想要的App数据进行爬取了。这样就完成了对App 数据请求的分析。在很多热门的App 中,大多数请求的协议是HTTPS,而Fiddler Everywhere也支持HTTPS的请求追踪,对于HTTPS这部分的请求原理与HTTP一样,感兴趣的读者可以尝试抓取腾讯新闻App的新闻数据,这里就不再赘述了。

2

参考书籍

《Python从入门到全栈开发》

50个示例源代码 | 500分钟视频讲解,系统讲解数据库开发、数据爬取、前端开发及完整项目的开发和上线

ISBN:978-7-302-59158-0

钱超 编著

价格:100元

内容简介

本书从实际项目出发,以Python为主要编程语言从基础知识到高级编程、从前端开发到后端开发,全面系统的阐述在Python实际项目开发过程中所需用的到各种技术及相关知识。

全书共分为3篇:第1篇为入门篇(第1和2章),入门篇详细讲解Python编程语言的基础知识,包括Python编辑器PyCharm的使用、Python的变量及标识符、数据类型、运算符、行和缩进、条件语句、循环语句、函数、面向对象编程、错误和异常、模块及常用模块的使用、包的使用、迭代器、生成器、装饰器、多进程与多线程。

第2篇为应用篇(第3章~第6章),应用篇详细讲解Python与第三方软件的结合及实际使用,包括Python对MySQL的操作、对MongoDB的操作、对Redis的操作、使用Python爬取网页内容、爬取App内容、常见数据分析与可视化包NumPy、Pands、matplotlib的使用、Python与前端交互等。

第3篇为实战篇(第7章~第8章),实战篇详细讲解Flask框架的使用,并通过开发一个短视频数据平台将前文所学的全部技术内容应用在实际项目当中,使学以致用。除了开发项目之外,对项目的上线流程也做了详细的讲解,包括服务器的部署、域名设置、服务器的备案等。使所学的知识真正能用在实际项目当中。

本书可作为Python初学者入门书籍,也可作为从事Web开发或者数据分析技术人员及培训机构的参考书籍。

编辑推荐

本书从Python基础知识开始讲解,一直到开发一个完整的实战项目,直到将开发完毕的项目一步步发布到线上。其中涉及Python的编程基础、数据存储、数据可视化、数据爬取、Web前端技能、Web实战项目的开发等,对Python应用所涉及的各个知识点都进行了详细的介绍。除了示例代码外,本书在每个重点知识点处都会给出完整的可运行的代码,并且每行新知识点的代码处都会有详细的注释,代码前后都会有编写代码的思路及技巧,帮助读者快速全面地掌握Python的开发技能,轻松快速地理解代码的运行机制及代码编写的思想。

3

精彩推荐

  • 微信小程序游戏开发│猜数字小游戏(附源码+视频)

  • Flink编程基础│Scala编程初级实践

  • Flink编程基础│FlinkCEP编程实践

  • Flink编程基础│DataStream API编程实践

  • Flink编程基础│DataSet API编程实践

  • 数 据分析实战│客户价值分析

  • 数据分析实战│价格预测挑战

  • 数据分析实战│时间序列预测

  • 数据分析实战│KaggleTitanic生存预测