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