Python和数据剖析
优采云 发布时间: 2020-05-08 08:03网络爬虫, Python和数据 分析王澎 中国科技大学哪些是网络爬虫?? 网络爬虫是一个手动提取网页的程序,它为搜索 引擎从万维网上下载网页,是搜索引擎的重要组 成。传统爬虫从一个或若干初始网页的URL开始, 获得初始网页上的URL,在抓取网页的过程中, 不断从当前页面上抽取新的URL装入队列,直到满 足系统的一定停止条件爬虫有哪些用?? 做为通用搜索引擎网页收集器。(google,baidu) ? 做垂直搜索引擎.(找工作的搜索引擎:,数据来源于: , , 等等) ? 科学研究:在线人类行为,在线社群演变,人类 动力学研究数据挖掘与网络爬虫,计量社会学,复杂网路,数据挖掘, 等领域的实证研究都须要大量数据,网络爬虫是 收集相关数据的神器。 ? 偷窥,hacking数据挖掘与网络爬虫,发垃圾邮件……(《google hack》….)爬虫是搜索引擎的第一步 也是最容易的一步? 网页收集 ? 建立索引 ? 查询排序用哪些语言写爬虫?? C,C++。高效率,快速,适合通用搜索引 擎做全网爬取。缺点,开发慢,写上去又 臭又长,例如:天网搜索源代码。? 脚本语言:Perl, Python, Java, Ruby。简单, 易学,良好的文本处理能便捷网页内容的 细致提取,但效率常常不高,适合对少量 网站的聚焦爬取? C#?(貌似信息管理的人比较喜欢的语言)我当初拿来写过爬虫的语言? Perl: 古老的脚本语言,hack 语言,被拿来写爬虫 有着悠久的历史,因此,书本支持相当丰富: 《spidering hacks》,《Perl & LWP》;强大的文 本处理能力,数据库支持能力。
缺点:有点奇特。? Python:相对年青一点的语言。对于爬虫来说各 方面能力挺好,并且还在建立中,没有Perl那样有 专门的爬虫书籍,不过网上能搜到一些文章。为什么最终选择Python?? 跨平台,对Linux和windows都有不错的支持。 ? 科学估算,数值拟合:Numpy,Scipy ? 可视化:2d:Matplotlib(做图很漂亮), 3d: Mayavi2 ? 复杂网路:Networkx ? 统计:与R语言插口:Rpy ? 交互式终端 ? 网站的快速开发?从一个简单的Python爬虫开始说明:加说明句子时要注意#需要英语编码里的,而不能是英文输入法中的#号,所 以添加英文说明时先在英语输入法下攻入#号后再切换到英文输入瀚海星云Pie 版的网页部份代码………Pie版的Html树部份结构借助BeautifulSoup分析树FindAll()是最方便最好用的函数通用搜索策略? 页面中的link? 深度优先? 广度优先现实中的策略是多种多样的? 因为瀚海星云link有很简单的规律,每页递减20,所以借助这个规 律设置每次赋入的URL,这样爬完了PIE版所有贴子运行结果? 有乱 码!!爬取英文网页常有的问题:不规 格的编码模式? 解决方式:编码转换最后的结果? Perfect!请温柔的对待瀚海星云!!? 设置延后时间(对于一个峰会,如果假定一 个真实的浏览者每10秒掀开一个新的网页的 话,一个不延时的爬虫每秒可以抓10个网页, 这样一个爬虫相当于占用了100个人的带 宽!)? 在午夜爬取可以适当推进速率道上的规矩:用Mysql储存数据? 先要在自己数据库里构建一个空的表,这里, 这里我早已构建了一个名为lilybbs的数据库, 表名为hunan_a? 导入相应的模块? 与相应的数据库联接? 写入数据库里的结果统计和做图? 这部份主要用于科研方 面,利用爬取到的数据 做一些简单的统计工作? 右图是某峰会的回复网 络,使用python的 networkx包做的。
? Pylab 是 matplotlib作 图包的一部 分? 左图是某 blog四年间 每天发表文 章的数目? 左一是某blog网站每个blog 评论数的统计,x是blog评 论数目,y是有这样数目的 blog的数目。可以看见是标 准的“power-law”分布,幂 指数为-1.2左右,拟合使用 了Scipy包的optimize.leastsq, 函数,具体可见scipy cookbook页面的fitting data 一栏? 左二是blog的comment networks 的入度与出度的散 点图,也就是每位点的坐 标x,y分别代表某个人获 得的评论和发出的评论数。 颜色代表这样点的数目。 本图使用了matplotlib中的 hexbin函数中级主题(一):编写更强壮的爬虫? 伪装成浏 览器? 容错中级主题(二):由内嵌脚本形成 的动态网页的爬取? 如何爬取 像左图这 样的网页 呢?? 它显示的 内容并不 会呈现在 html文件 里。高级主题(三):SQLAlchemyMysql这样关系型数据库的缺点:在表 示复杂网路这样一对多,和多对多 的关系时,非常冗余;一旦须要做 比较复杂的统计,sql句子会显得异 常复杂。
? 当你越关注性能,就会发觉 SQL 数据库距对象集合越来越远;当你越关 注具象,就会发觉对象集合距表和行这种概念越来越远。SQLAlchemy 将 致力于尽量宽容这两个世界。? SQLAlchemy 并不把数据库简单地视为数据表的集合;它把它们看作是关 系代数引擎。它的关系对象映射才能使类以不同的形式映射到数据库。 SQL 工具包也不光才能对数据表进行 select 操作——你能够对联接、子查 询和联合进行 select。这样数据库关系和领域对象模型之间的耦合从一开 始就得以挺好地解开,使得两个领域都得以发挥其各自的极至。? 我写过的某个冗长的调用? 号称能更简约明了的SQLAlchemy会成为 mysql的替代品么?高级主题(四):统计神器R语言? 求残差,聚类,判 别,拟合,团簇探 测,时间序列剖析, 生存剖析,甚至复 杂网路,这些R语言 里都有挺好的函数? 可以直接使用R语言, 也可以借助Rpy在 python上面调用R的 函数,不过Rpy一直 开发中,还不是太 成熟以前我们获取数据的手段: 我们用望远镜来洞察宇宙高昂的实验 只是为了获取大自然的数据Internet 带给我们了海量的数据 善用数据,了解我们自己广袤的比特海是另一片未知的星空感谢你们!