Programmer_Designer
作者|藤子
互联网提供给我们纷繁多彩的信息世界,我们从中获取大量的信息资源——文字,数字,图形,声音以及画面——他就像一个日益膨胀的小宇宙,每天都有人上传资源到网络上,即使不是主动,每天也会有很多被动的信息产生于各大互联网公司的服务器中。
我们已经习惯在互联网上看新闻,找学习资料,看动画片。当然收集信息也是如此,互联网提供了一个无所不有的信息宝库。对于数据分析人员来说,学会利用互联网高效的采集数据方法尤为重要。
利用计算机编程语言免费获取互联网信息资源的方法,我们简称网络爬虫。
Ⅰ 我们的浏览器如何工作
在学习网络爬虫之前,我们先来了解下网页链接的工作原理,我尽量使用最简单的语言向大家说明,即使你没有学习过网络原理,有兴趣的同学可以参见谢希仁版《计算机网络原理》教材。强烈推荐韩立刚老师的网络视频教程。
当你打开浏览器,在浏览器窗口输入百度网页(www.baidu.com),你的电脑发送一串1和0比特值,表示电路上的高低电压。这些比特构成了一种信息,包括请求头和消息体。请求头包含当前你电脑的本地路由器MAC地址和百度服务器的IP地址。消息体包含你对百度服务器网页的请求。
你的本地路由器收到所有1和0比特值,把它们理解成一个数据包(packet),从你自己的MAC 地址“寄到”百度的IP地址。本地路由器把数据包“盖上”自己的IP地址作为“发件”地址,然后通过互联网发出去。
你的数据包游历了一些中介服务器,沿着正确的物理/电路路径前进,到了百度的服务器。
百度的服务器在他所在的IP地址收到了数据包。
百度的服务器读取数据包请求头里的目标端口(通常是网络应用的 80 端口,该端口一般提供浏览器服务),然后把它传递到对应的应用——网络服务器应用上。
网络服务器应用从服务器处理器收到一串数据,数据是这样的:
●这是一个GET请求
●请求文件 “https://www.baidu.com/”
网络服务器应用找到对应的HTML文件,把它打包成一个新的数据包发送给你,然后通过它的本地路由器发出去,用同样的过程回传到你的机器上。
Ⅱ 为何使用python从网页中获取信息
当然,你可以不使用任何编程语言,仅用浏览器就可以解决获取信息的问题,但是当你需要大量数据做数据分析的时候,仅使用浏览器是不够的。使用计算机语言,可以快速的从网页的服务器中获取大量的你需要的信息,而过滤掉你不需要的信息。
快速高效是我们使用计算机语言实现爬虫的原因,当然C/C++,Java,C#,Go等大多数语言都可以讲出精彩的故事,为何偏偏使用python?就是因为简单。他实际上并需要你掌握过多的编程技巧。
python的强大之处在于提供给用户已经编写好的程序库文件,用户只需要知道如何调用其中的函数及其方法就可以轻松使用各种爬虫工具,而不需要知道库文件中的方法是如何实现的。
Ⅲ python有关爬虫的库文件
urllib标准库
urllib是Python的标准库,包含了从网络请求数据,处理cookie,甚至改变像请求头和用户代理这些元数据的函数。我们将在讲解中广泛使用urllib,所以建议你读读这个库的Python 文档。urllib中包含四个子模块:
xml标准库
python的标准库中,提供了6种可以用于处理XML的包。
因为并不是所有库我都了解,相关比较优劣以后再整理给大家,这里不过多做介绍。
beautifulsoup第三方库
最近在看《Python网络数据采集》,里面的爬虫代码基本上都是使用这个库实现的,在后面的学习过程中,我也会将我的读书笔记整理给大家。
requests第三方库
Requests是用Python语言编写,基于urllib,采用Apache2 Licensed开源协议的HTTP 库。它比urllib更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。简单理解urllib标准库可以实现的功能requests都可以实现,requests比urllib更强大。
selenium第三方库
以上是我知道并使用过的一些库,实际上python跟爬虫相关的还库有很多,而且很多爬虫框架的知识还涉及其他的一些东西。互联网也提供了相当多的网络资源,博客中很多人免费分享自己的学习经验。有兴趣的同学可以自己上网学习。
参考文献
Web Scraping with Python by Ryan Mitchell (O’Reilly).
Copyright 2015 Ryan Mitchell.
领取专属 10元无门槛券
私享最新 技术干货