R语言与网站分析(txt+pdf+epub+mobi电子书下载)


发布时间:2020-10-11 16:37:57

点击下载

作者:李明

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

R语言与网站分析

R语言与网站分析试读:

前言

大数据下网站分析的重要性

当前,随着互联网对人们生活影响的不断增大,每天有数以亿计的用户行为数据被网站记录。这些数据以隐性信息的方式反映人们的行为习惯、兴趣爱好、性格特征,甚至是政治主张。网民每天都在告诉我们,他们到底需要什么。而这也正反映了用户的需求,可以说谁能读出用户的需求,谁就能更好地迎合用户,获取更多的流量,其网站的用户体验也就越好。

网站分析就是通过用户使用网站时留下的数据来读出用户需求、习惯、爱好的方法。同时,通过数据分析也可以驱动整个网站的优化。利用数据分析驱动网站优化是一种最科学的决策方式,它直接反映了在现实中使用网站的用户情况,而非网站产品经理或决策人想象的用户。R语言的优势

R语言作为一个可进行交互式数据分析和探索的强大平台,被越来越多的数据分析和挖掘人员及公司所使用。其优势主要体现在以下几个方面:

·R语言的使用和学习并不需要掌握高深的语法,这使得分析师可以把更多的精力放在算法本身的实现上。

·R语言是目前包含数据算法最全的工具,其灵活强大的绘图功能可以更好地表现数据处理结果。

·R语言本身是免费和开源的,并与众多商业数据分析软件,如SAS等有接口。

·R语言有搭建可视化软件的扩展包,公司可以依据自身的商业需求搭建指标监控平台。

R语言的优势使其发展势头大好,特别是在互联网公司,R语言逐渐受到了重视。对于有志成为互联网数据挖掘师/分析师的读者来说,掌握R语言将成为他们未来必备的技能之一。编写本书的主旨

如何才能将R语言和网站分析有机地结合起来,使其价值得到体现?对于广大读者来说,很需要一本对此进行详细阐述,深入分析,指导其进行实战的图书,但是目前市面上还没有相关的图书出版,而本书的主旨正是为了填补这个空缺。相信本书会给读者带来不小的收获,并且可以把R语言更好地应用到网站分析和互联网数据挖掘的工作上。

本书侧重于R语言对网站分析和挖掘的代码实现,并不侧重于对计算结果的分析讨论以及网站统计的思维方法。同时,本书以通俗的非学术语言结合实际的代码案例来介绍网站分析的基本思路和统计理论的数学原理,力争做到对读者授之以“渔”,而非简单地授之以“鱼”。阅读对象

·网站数据分析师。通过阅读本书,结合公司自身的业务逻辑,使用R语言进行网站数据系统的搭建。

·数据挖掘师。书中结合互联网的常用数据挖掘方法,给出R语言的相应实现方式,使原来以SAS/SPSS软件为基础的挖掘方案转化为以R软件为基础的挖掘方案。

·互联网产品经理。过去网站分析系统是以自主研发或使用第三方免费工具的方式来实现的,希望通过本书可以实现以R语言为基础的新的搭建方案。

·其他行业的数据从业人员。虽然本书与网站分析和互联网数据挖掘相结合,但里面涉及的经典分析算法是同其他行业相通的,所以对于其他行业的数据分析和挖掘也有借鉴作用。校勘和支持

由于作者的水平有限,编写的时间也很仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。读者可以在我的个人博客www.bassary.com中留言,或直接发送至我的邮箱568677413@qq.com。我会定期发布Bug勘误表,同时,如果你遇到任何问题,也可以通过上述途径来提问,我将尽量在线上为读者提供最满意的解答。书中的全部代码都是经过本人调试的(R语言版本为2.9.2),部分源文件会发布在我的博客中,我也会将相应的功能更新及时更正出来。感谢

首先要感谢R语言的创建者Ross Ihaka和Robert Gentleman,他们开创了一款影响统计学乃至所有自然和社会学科的软件。

感谢沈阳理工大学,它为我大学四年提供了一个轻松而充实的学习环境。感谢我的大学导师马平全,是他培养了我如何自学和探索新学科的能力。

感谢一直活跃在群里(238649264)和关注我博客的网友:王思远、秦赫赫、徐小小、费正飞、王洋等,他们为本书的形成提出了很多建设性的意见。

感谢机械工业出版社华章公司的编辑杨绣国,在这一年多的时间里始终支持我的写作,你的鼓励和帮助引导我顺利完成全部书稿。

感谢我的老婆刘慧,是她一直鼓励我直到完成全书。这里我想对她说:“能有你的陪伴是我一生的幸运。”

最后一定要感谢我的母亲和已故去的父亲,感谢你们将我培养成人,并时时刻刻给我信心和力量!

谨以此书献给我最亲爱的家人和朋友,以及众多热爱R语言和从事网站分析挖掘工作的朋友们。李明第1章统计思维与网站分析

第1章先大略地谈谈数据统计和分析从业人员的常用思维方式(理论),以及网站数据分析和挖掘的整体思路,希望能帮助读者从数学思维和统计理论上对全书有整体的认识。1.1 不确定与确定

日常生活中的很多自然规律都是具有确定性结果的。也就是说,在多次相同的实验环境下,其实验结果均是相同的。例如,在相同的位置观察100天内太阳升起的方向,如果从东方升起则记为T,否则记为F。那么被记录下来的100条数据一定均为T,实际上太阳每天都是从东方升起的。这种类型的案例就是有确定性结果的案例。那什么是具有不确定性结果的案例呢?例如,以相同的方式投掷同一枚硬币,共实验100次,如果正面向上则记为T,反之记为F。在这种情况下,最终的数据是不能预测的,实际上每次投掷的结果既可能是正面,又可能是反面,这就是一个不确定性结果的案例。

对于有确定性变量的,可以使用数学公式来抽象出其中的规律,从而在已知某些变量数据的情况下,预测另一些变量的数值或范围。在上面的例子中,“太阳是否从东方升起”这个变量的取值恒为T,可以使用一个数值来概括该确定性变量。而对于“投掷硬币结果为正面”这个变量的取值就无法简单地使用一个数值来确定了,因为每次实验的结果均有可能不同,那又该如何研究这类不确定的变量呢?

继续来做投掷硬币的实验,首先投掷10次并记录下结果为正反两面的次数。然后投掷20次、30次,直至2500次并依次记录结果,其统计结果如表1-1所示。表1-1 投掷实验统计结果

在该统计表的基础上,以投掷次数为横轴,正面次数/投掷次数的比例为纵轴,绘制出曲线图,如图1-1所示。图1-1 投掷次数–正反面比例散点图

观察图形得知:随着投掷次数逐步增加,正面次数/投掷次数在0.5上下浮动,并且浮动的幅度越来越小,即其不确定性越来越小。可见,虽然我们无法抽象出某一次投掷硬币的结果,但是有可能在大量投掷次数的情况下,抽象出正面次数/投掷次数的结果。下面研究投掷次数处于[2000,2500]范围内,变量“正面次数/投掷次数”的结果,如表1-2所示。表1-2 投掷实验结果数据

绘制出的曲线图如图1-2所示。

观察图1-2可知:变量“正面次数/投掷次数”的不确定性已经很低了,它明显趋近于数值0.5。下面统计该变量在[0.465,0.535]范围内并以0.005为间隔的数值,如表1-3所示。

把以上数据绘制成直方图(称为频数统计图),如图1-3所示。图1-2 [2000,2500]范围内投掷次数–正反面比例散点图表1-3 实验结果的频数统计数据图1-3 实验结果的频数统计直方图

如果经过足够多的实验后得到大量数据,频数统计图中横轴的间隔足够小,则可以得到一条平滑曲线(称为概率密度曲线),如图1-4所示。图1-4 拟合的概率密度曲线

该曲线类似于钟形曲线,统计学上多用正态分布曲线的分布规律拟合,也就是说,该类变量服从正态分布。现代统计学中的很多理论均是在正态分布的基础上发展起来的。一旦某一变量服从正态分布,就可以使用对应的统计学理论来预测该不确定性变量的预测估值及其范围,并可以给出该预测值的可信度。

在网站分析中相关的应用也很多。例如,在研究用户每天浏览网站的情况时,由于不同用户是否会浏览的可能性均不同,因此无法预测“某一个体每天的浏览行为”,这类似于上文提及的“某一次投掷硬币是否为正面”的问题。但是可以统计每天大量用户浏览的次数,因为该值不确定性的可能性很低,这类似于上文提及的“大量投掷次数的情况下,研究正面次数/投掷次数”的问题。如果该变量服从了正态分布,就可以使用相应的理论从整体上研究用户的浏览行为。注意

在统计学中除了正态分布以外,还有很多典型分布,这里暂不一一介绍。网站统计分析的基础就是:找到一个服从某种分布(主要是正态分布)的变量,用以衡量网站对绝大部分用户(而非某一个特定用户)的整体性能。1.2 统计分析方法

网站分析一般有以下几种基础的数学思维方法,这也是大多数统计分析的方法。1.2.1 细分分析

由上文可知,网站分析的基础是找出服从正态分布(或其他分布)的变量,其中,细分分析是最主要的方式。何为细分?来看个案例,图1-5是某网站两年内日浏览量(PV)的频数统计图。图1-5 网站两年内日浏览量的频数统计图

由图1-5可知,该网站的PV主要集中在0~300000之间,但它并不服从任何典型的分布。此时就要思考是否会有其他因素影响了该变量,如用户的自然属性(性别、学历、职业等)或是否为周末等因素。既然如此,那接下来试着以天为单位,看看周一至周日每天的PV情况,如表1-4所示。表1-4 网站两年内的日浏览量数据图

然后把每行数据(表示每周的数据)绘制为一条折线(见图1-6),这里共绘制出了104条折线。图1-6 每周PV折线图

由图1-6可知,周一至周四的PV数据比较相近,但是周五和周末的PV则明显不同,基于这种情况,依次绘制周一至周日的频数统计和概率密度曲线图,如图1-7所示。图1-7 周一至周日的日浏览量

图1-7中已经呈现出了钟形图,实际上经过计算它们均服从正态分布。上述问题的关键就是使用了某一特定因素把原始变量细分为了多个变量(分为了7个,依次表示周一至周日的不同PV),即采用细分方式来找出规律。由于细分变量服从正态分布,所以可以使用相应理论进一步研究。1.2.2 对比分析

在细分分析后,可以进一步使用对比分析来找到指标变量变化的真实原因。在上例中,由于周一至周日的PV各自服从正态分布,所以可以使用其均值来代表网站的整体PV性能,绘制的每日PV对比图如图1-8所示。图1-8 每日PV对比图

从图1-8中可以分析出大部分用户喜欢在周末浏览网站,并且周日浏览的可能性最高。经过对比分析,可以找到究竟是哪些因素影响了指标,其影响的幅度各有多大,从而帮助决策者抓住问题的本质。1.2.3 趋势分析

趋势分析主要是研究指标变量的上升下降,以及周期性等趋势性分析指标的异常变动。如果网站是新建立的并处于上升期,则其日PV就不会一直是平稳的。图1-9是某网站成立两年内每周六的PV趋势变化曲线。图1-9 每周六的PV趋势变化曲线

可见网站在成立约40周后趋于平稳,在第47周出现了峰值并在之后的10周内出现了明显的下降趋势。使用趋势分析,可以观察出指标的长期走势,从而帮助决策者预测日后的指标变化,通过实时监控指标的短期变化,也可以尽早察觉指标的异常变动情况,从而尽早发现问题。1.3 网站分析概要1.3.1 解决用户需求

网站存在的意义是解决部分访客(目标群体)的某些需求。因此网站分析的主要目的是通过量化指标来衡量网站解决用户需求的能力,其主线可以分为如下3个阶段:

1)有多少访客来到了网站(投入),可使用引流类指标来衡量。

2)网站对访客的黏性,它体现了用户在通过网站寻求解决自身需求的过程中,所表现出来的整体性能情况,可使用黏性指标来衡量。

3)网站最后解决了多少用户的需求(产出或投入产出比),可使用产出指标来衡量。

图1-10通过和传统超市的对比,形象地体现了一个电子商务网站解决用户购买商品这一主要需求的过程,及其使用的主要指标。[1]图1-10  电子商务网站用户购买商品的过程

1.引流指标

引流指标包括浏览量(PV)、访问次数、访客数(UV)、新访[2]客数、新访客比率、IP等内容 。(1)浏览量(PV)

定义:页面浏览量即为PV(page view),用户每打开一个页面就被记录1次。

含义:PV越多,说明该页面被浏览得越多。PV之于网站,就像收视率之于电视,已成为评估网站表现的基本尺度。(2)访问次数

定义:访问次数即visit,是指访客在网站上的会话(session)次数,一次会话过程中可能浏览多个页面。

含义:页面浏览量(PV)是从页面角度衡量加载次数的统计指标,而访问次数(visit)则是从访客角度衡量访问的分析指标。如果网站的用户黏性足够好,同一用户一天中多次登录网站,那么访问次数就会明显大于访客数。(3)访客数(UV)

定义:访客数(UV)即唯一访客数,是指一天之内网站的独立访客数(以Cookie为依据),一天内同一访客多次访问网站只计算一个访客。

含义:唯一访客数是从访客角度看访客到达网站的数量。(4)新访客数

定义:一天的独立访客中,历史第一次访问网站的访客数。

含义:新访客数可以衡量营销活动开发新用户的效果。(5)新访客比率

定义:新访客比率=新访客数/访客数,即一天中新访客数占总访客数的比例。

含义:整体访客数不断增加,并且其中的新访客比例较高,能表现网站运营在不断进步。就像人体的血液循环一样,有新鲜的血液不断补充进来,充满活力。(6)IP数

定义:一天之内,访问网站的不同独立IP数之和。其中,同一IP无论访问了几个页面,独立IP数均为1。

含义:从IP数的角度衡量网站的流量。

2.黏性指标

黏性指标涉及跳出率、平均访问时长、平均访问页数等内容。(1)跳出率

定义:只浏览了一个页面便离开网站的访问次数占总访问次数的百分比,即只浏览了一个页面的访问次数/全部的访问次数汇总。

含义:跳出率是非常重要的访客黏性指标,它显示了访客对网站的兴趣程度。跳出率越低,说明流量质量越好,访客对网站的内容越感兴趣,这些访客越可能是网站的有效用户、忠实用户。该指标也可以衡量网络营销的效果,指出有多少访客被网络营销吸引到宣传产品页或网站之后,又流失掉了。例如,网站在某媒体上打广告推广,分析从这个推广来源进入的访客指标,其跳出率可以反映出选择这个媒体是否合适,广告语的撰写是否优秀,以及网站入口页设计的用户体验是否良好。(2)平均访问时长

定义:平均每次访问在网站的停留时长,即平均访问时长等于总访问时长与访问次数的比值。

含义:平均访问时间越长,说明访客停留在网页的时间越长。如果用户对网站的内容不感兴趣,则会较快关闭网页,那么平均访问时长就短;如果用户对网站的内容很感兴趣,在网站停留了很长时间,则平均访问时长就长。(3)平均访问页数

定义:平均每次访问浏览的页面数量,平均访问页数=浏览量/访问次数。

含义:平均访问页数越多,说明访客对网站的兴趣越大。而浏览信息多也使得访客对网站更加了解,这对网站市场信息的传递、品牌印象的生成,以至于将来的销售促进都是有好处的。一般,会将平均访问页数和平均访问时长这两个指标放在一起分析,进而衡量网站的用户体验情况。

3.产出指标

产出指标又包含了转化次数、转化率两个指标。(1)转化次数

定义:访客到达转化目标页面,或完成网站运营者期望其完成动作的次数。

含义:转化就是访客做了任意一项网站管理者希望访客做的事,与网站运营者期望达到的推广目的和效果有关。(2)转化率

定义:转化率=转化次数/访问次数。

含义:转化率即访问转化的效率,数值越高,说明越多的访问次数完成了网站运营者希望访客进行的操作。[1] 本图源于《百度统计网站分析白皮书》。[2] 此处的指标定义参考了《百度统计:网站分析白皮书》。1.3.2 寻找新的用户需求

除了要衡量网站解决用户需求的能力以外,网站分析人员还要通过数据指标来寻找新的用户需求,并对用户进行细分,最后实现网站对用户的个性化服务。以电子商务网站为例,一般可以通过如表1-5所示的途径来收集用户的新需求。表1-5 收集用户需求的途径

此外,随着社交网络的兴起,用户的站外分享内容也是寻找用户需求的新途径。

在收集这些个体用户提出的需求后,要使用科学的统计方法来对其进行分析,并把不同的需求进行等级分类,同时要拒绝某些极少数个体提出的非合理需求。

关于网站的分析方法,本书只在这一章简要进行了讲解,对于具体方法和应用实践均会在后续章节中结合网站分析和R语言实现案例来体现。读者若想系统性地了解网站分析理论可以参考笔者的博客文章:http://www.bassary.com/?p=1451。第2章R语言数据操作基础2.1 R简介

这里谈到的R涉及两个含义,它既表示一种用于数据分析建模以及绘图的语言,又指一个有着统计分析功能及强大作图功能的软件系统。R语言是由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman共同创建的,因此他们把该语言称为R语言。该语言在GNU协议General Public Licence 4下免费发行,现在由“R开发核心团队”负责开发。由于R语言是基于由AT&T贝尔实验室所创的S语言发展出的一种语言,因此,通常情况下使用S语言编写的代码都可以不做修改地在R环境下运行。

R软件是一个免费的自由软件,包括UNIX、Linux、MacOS和Windows等几个版本,可以免费下载R的安装程序、各种外挂程序和文档等。在R的安装程序中只包含8个基础模块,其他拓展的算法包可以通过CRAN获得。在CRAN中,除了有收藏R的执行档下载版、源代码和说明文件以外,还收录了各种用户撰写的软件包。目前,全球有超过100个CRAN镜像站。2.2 了解R软件2.2.1 软件安装

新用户可以通过http://cran.r-project.org/mirrors.html浏览CRAN镜像站地址,其中包含了中国大陆地区的5个镜像地址,如图2-1所示。图2-1 R软件包镜像地址

点击上面的任何一个地址均可进入其镜像的详情页面,通过该页面,可以下载Linux/Macos/Windows操作系统的R软件安装软件包,如图2-2所示。图2-2 R软件下载界面2.2.2 R软件界面

下载并安装R软件后,双击打开该软件,可以看到R软件界面,如图2-3所示。可以在命令行中直接输入R语言命令,运行并展示其结果。命令行最主要的两个应用是“文件”菜单(见图2-4)和“程序包”菜单(见图2-5)。图2-3 R软件界面图2-4 R软件的“文件”菜单图2-5 R软件的“程序包”菜单

重点了解“文件”菜单中的如下选项:

·运行R脚本文件:浏览本地硬盘中的R语言命令文件(多是以.r为后缀名的文件)。

·加载工作空间:加载每次关闭程序前保留的数据文件(以.RData为后缀名的文件),也可以使用load命令来实现。

·改变工作目录:修改工程目录。“程序包”菜单中的主要选项如下:

·加载程序包:选择已经安装到R软件中的扩展算法的程序包,也可以用library命令来实现。

·安装程序包:通过CRAN镜像站下载并直接安装扩展算法的程序包,也可以用install.packages命令来实现。

·从本地zip文件安装程序包:通过浏览本地硬盘中扩展算法的程序包源文件来安装算法包。

在了解了R软件的各个菜单选项后,下面介绍如何使用R软件,例如,要执行一条绘图命令,这时会弹出绘图窗口并展示绘图结果,如图2-6所示。图2-6 绘图窗口

在保存绘图结果时,可通过执行“文件→另存为→<格式>”命令将结果转存为pdf、bmp、jpeg等多种格式。2.2.3 工作目录

启动R软件后,会在本地硬盘中为工作目录设置一个路径,通过该路径即可寻找需要的数据和文件。默认情况下,工作目录是R软件的安装路径。通过getwd()命令可以读取工作目录的路径,其格式如下:getwd() [1] "d:/My Documents"

可以看到,读取后的返回值是字符串形式的,也可以使用如下setwd()命令来设置工作目录。setwd(paste(getwd(),"/r",sep=""))getwd()[1]"d:/My Documents/r"

其中,paste是字符串合并函数,setwd(paste(getwd(),"/r",sep=""))命令返回的字符串为"d:/My Documents/r"。sep是合并连接符设置参数,默认为空格。此处设置为无任何连接符。

不过要注意,R语言采用的是UNIX路径规则,对于Windows系统的用户来说,如果在路径中使用了Windows常用的“/”作为目录层级间隔符,则会出错。例如:setwd("d:\My Documents\r")错误于setwd("d:My Documents\r")无法改变工作目录。此外,还会出现Warning messages,它表示:1)不认识字符串里'\M’这样的逸出号。2)从"d:\My Documents\r"里删除了不认识的逸出号。

既然R语言继承了UNIX路径规则,就可以使用“.”来代表当前路径,用“..”来代表上级路径,例如:setwd("d:/My Documents")setwd("./r")getwd() [1]"d:/My Documents/r"

当然,也可以在R软件中执行“文件→改变工作目录”命令来对工作目录进行设置。2.2.4 命令行交互

前面介绍了如何设置工作目录,下面介绍命令行的使用方式。在图2-7中,红色的竖线是命令输入光标,单击后可直接输入R语言命令。图2-7 命令输入

R软件交互模式支持类似于文本复制和粘贴的操作,如图2-8所示。图2-8 复制和粘贴操作

如果想查看之前输入过的历史命令,可按上下方向键。

输入命令后,按Enter键即可显示结果,如图2-9所示。图2-9 命令及输出结果

在图2-9中,红色是输入命令,蓝色是命令结果的终端展示。

使用sink()命令可以将所有后续的输出由终端转向一个外部文件,例如下:sink("d:/My Documents/r/output.txt")#把后续代码中的输出写入一个txt文件中sink()#将把后续代码输出重新恢复到终端上展示2.2.5 命令脚本文件

使用脚本,R软件可支持批量执行命令模式,具体步骤如下:

1)把需要批量执行的命令写入一个脚本文件,然后使用source命令来批量执行其内部命令,例如:setwd("d:/My Documents/r")print("初始化工作目录成功")

2)把以上命令写入“d:/My Documents/script.r”文件内,然后在命令行中运行该脚本即可。例如:setwd("d:/My Documents")source("d:/My Documents/script.r") [1] "初始化工作目录成功!"getwd() [1] "d:/My Documents/r"2.2.6 工作空间数据

运行R时,所有变量、数据、函数及结果都是以对象(object)的形式存在于计算机的活动内存中的,此时内存中的所有对象数据称为工作空间数据。可以用save.image()函数把工作空间数据转存于硬盘中。下面的代码把此前产生的所有工作空间数据存储在工作目录下r目录的*.RData文件中。save.image("./r/data.RData")

如果想读取硬盘中的*.RData文件数据,可以使用load()函数。rm(list=ls()) #删除工作空间内的所有对象数据a<-c(1:20) #建立a对象,并赋值一个向量save.image("./r/data.RData") #把工作空间数据存放于硬盘中rm(a) #删除工作空间中的对象aa #对象a已经不存在了错误: 找不到对象'a'load("./r/data.RData") #在硬盘中读取*.RData文件a #对象a又重新载入了工作空间中(内存中) [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

一般在处理大数据挖掘项目时,前期的数据处理最为耗时。此时通常会把项目中有关数据处理的命令单独制成脚本文件(可命名为init.data.r),并在脚本文件最后使用save.image()语句把数据存于硬盘中。命令如下所示:init.data.r脚本文件的内容<数据处理命令>save.image(<目录/data.RData>)

在后续的数据分析脚本(可命名为sol.data.r)中,可使用load()命令先载入数据处理脚本产生的对象数据。这样,在修整分析脚本时,就不必再在数据处理阶段耗费时间了。sol.data.r脚本文件的内容load(<目录/data.RData>)<数据分析命令>2.2.7 帮助

R软件提供了丰富的函数帮助系统(不过都是英文的),而且有HTML和CHM两种形式。在HTML帮助文件中,\doc\html\index.html是其帮助文件的存储路径,可以使用help.start()命令打开。

在使用帮助文件时,如果想在帮助文件中查找source命令,则可以在命令行中直接输入“?source”来查找,如图2-10所示。图2-10 帮助文件的使用

还可以使用“??source”检索所有与source相关的信息,如图2-11所示。

初学者也可以使用R软件中的“帮助”菜单来查找,如图2-12所示。

关于“帮助”菜单的使用,这里就不再详细介绍了。图2-11 检索所有与source相关的信息图2-12 “帮助”菜单

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载