从零开始写一只爬虫 · Hello World

爬虫

我们学语言都是从Hello World开始的吧?(我不是!我学语言第一个程序是个VB写的俄罗斯方块而不是HelloWorld!)

那么我们来写一个Hello World吧

首先在目标网站上随便找到一家公司,获取到他的URL,比如陌陌。然后,让我们的Python模拟浏览器的行为,“打开”这个页面,获取到网页源代码,并把源代码输出到控制台上。

这段代码如果能成功运行,就标志着,你的网络是畅通的。

题外话:Linux里面有个命令叫做 curl ,最基础的功能就和上面的代码一模一样的。

然后呢?

获取到HTML代码有什么用啊!我要的是里面的关键信息啊!下面就是从一大堆乱糟糟的HTML代码中把我们想要的信息抽取出来。

首先说,这些关键信息的出现位置几乎都是固定的。不信你在这个网站上多打开几个公司看看就知道了。然后,不仅出现位置比较固定,查看源代码我们也会发现,在“公司名称”和“公司所在地”这两个我们想要的信息前面,都有明显的标志:可能是id,可能是class,甚至是全局唯一的标签(比如 h1 )。

比如,公司名称,是这样出现的:

公司所在地是这样出现的:

找到了这些信息,怎么办呢?有两种办法。

第一种办法:正则表达式。

Ok我不会正则表达式……就不在这里献丑了……囧……更确切地说,我不会“提取”匹配到的东西。

第二种办法:根据DOM查找

我们知道,HTML是有层次结构的。如果想找到某个元素,需要从html标签开始向下找,在某个div的某个div的某个ul的某个li里面就是我们想要找的信息。如果用过JS的话肯定对这个门清。

对于“公司名称”,在写JS的时候可以这样找到:

对于“公司所在地”,在写JS的时候可以这样找到:

能实现这个“路径导航”的工具不少。Java下面甚至有工具能直接用$(CSS选择器)这样的方式进行导航,吓死宝宝了……当然,万能的Python也有很多库。下面是使用一个叫做BeautifulSoup的库的演示,官方文档见这里。吐槽:“这篇文档当然还有中文版”,呵呵呵?

Ok,到这里,我们已经能将网页“点开”,并且能获取到其中的关键信息了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注