搜索引擎和(大多数)新闻类APP都不自己生产内容(虽然有些平台孵化了自己的内容,但也只占整个平台内容的很少的一部分,更重要的是,成本非常高)。
那么,他们的大量的内容从哪里来?
“我们不生产内容,只是内容的搬运工”网站外包,将互联网上的内容“搬运”到自己的服务器上,这就是爬虫。
首先,我们需要了解一下互联网的结构:
互联网上的内容数以亿计,虽然很复杂,但说白了就是一张大网,网上的每个节点就是一个网页,连接网页的超链接(Hyperlinks)相当于线,线把所有的节点连接在一起,形成了一个复杂的网。
通过点击超链接的文字或者图片,就可以跳转到对应的网页。爬虫可以自动访问到每一个网页,并把网页的内容保存下来。
世界上第一个网络爬虫由麻省理工学院的学生马修·格雷(Matthew Gray)在1993年写成,之后的爬虫尽管越来越复杂。
比如:可以实现更快的访问速度、访问更多的网页、更好的将网站内容解析出来。但爬虫的基本原理是一样的,都主要包括三个部分:访问网页链接,下载网页内容,解析网页内容。
爬虫的工作过程与我们查找网页的过程是一样的。
比如,我们想要查一下豆瓣上最新的电影:首先,在浏览器地址栏输入网址链接 https://movie.douban.com/ ;之后,浏览器会跳转到豆瓣电影;最后,我们就可以找到当前热映的电影。
7行代码就能爬取豆瓣电影的数据
同样的,一个最简单的爬虫三步就可以爬取一个网页:
访问这个网页;
把网页内容下载下来;
对下载的内容进行解析。
最简单的爬虫三步就可以爬取一个网页,那么要写多少行代码呢?
我们写一个爬虫,爬取豆瓣的“一周口碑榜”,只要7行代码!
代码如下:
7行代码就能爬取豆瓣电影的数据
在Python环境中运行这几行代码,就可以获取“一周口碑榜”了,结果如下:
[‘迦百农’, ‘绿皮书’, ‘驯龙高手3’, ‘速成家庭’, ‘阿丽塔:战斗天使’, ‘肤色’, ‘死亡天使’, ‘黎明墙’, ‘小小巨人’, ‘出·路’]
其中最关键的是解析网页内容,主要是(‘//td[@class=”title”]//a/text()’)这行代码,大多数人可能对比较困惑。
这涉及到HTML网页的结构:
可以把网页理解成一个文件夹,打开一个文件夹,会发现子文件夹,子文件夹或许还有文件夹;通过打开一个个文件夹,最终找到需要的数据。
//td :这个相当于大目录;
[@class=”title”]:这个相当于小目录;
//a :这个相当于最小的目录;
/text():这个是提取其中的文字内容。
至于是怎么写出来这行代码的,可以通过在网页空白处点击右键,查看源代码,就可以找到对应的td、class=”title”、a等标识符。
大多数程序员写爬虫选择python的理由很简单:
首先,python有很多的库,可以直接调用,比如:上面的代码就引入了requests、lxml库,分别实现访问网页、对网页结构解析。有开源的库九帆网络,就直接调用,避免重复造轮子。
其次,python写起来很方便,配置也简单,短短几行的代码,就可以直接运行了,如果使用C或者Java,可能配置环境就要老半天。
(郑重声明:本文版权归原作者linghu所有,转载文章仅为传播更多信息之目的,如有侵权,请联系我们删除;如作者信息标记有误,请联系我们修改。)
科技行业网站制作,