怎样做一个合格的网络爬虫?

我想要做一个自己的产品——网络爬虫,它可以帮你解决许许多多问题。比如,你不仅仅可以在网络上找到链接,而且可以跟随这些链接找到所有网页,帮你节约时间。

计算机科学导论第二课中介绍了两种方法,一种是过程的方法;一种是控制的方法。

过程的方法指的是把你所写的所有代码打包整理起来,以便于你可以更容易地下次利用。

控制的方法指的是你需要找到一种方法,让它为你做决定、做重复的事情、去帮助你在网页上去找所有的链接这些事情。

在网路上寻找URL代码我可以写一下:

page=…contents of some web page…

start_link=page.find('<a href=')

start_quote=page.find('"',start_link)

end_quote=page.find('"',start_quote+1)

URL=page[start_quote+1:end_quote]

print URL

上面是在一个网页中搜索到的第一个URL

为了在剩下来搜索相同的第二个我们可以再写一次:

page=page[end_quote: ]

start_link=page.find('<a href=')

start_quote=page.find('"',start_link)

end_quote=page.find('"',start_quote+1)

URL=page[start_quote+1:end_quote]

print URL

注意在冒号后面加一个空格指的是从这个位置一直到最后。

我们还可以继续寻找第三个URL

page=page[end_quote: ]

start_link=page.find('<a href=')

start_quote=page.find('"',start_link)

end_quote=page.find('"',start_quote+1)

URL=page[start_quote+1:end_quote]

print URL

这个过程我们可以一直这样循环下去,为了减少人力,节省时间我们该怎么办呢?让电脑去做就好了。

我们要做的第一件事就是过程抽象,它是什么意思呢?

指的是写一次代码,供很多次使用,改变输入变量来获得不同的输出,上面写的很多代码都是一样的,意味着我们要一遍一遍地做着重复的事情。在网页上找到链接的起始部分,在end_qvote找到起始引号的部分,接着提取链接,然后打印网址。不同的是page不同的值,持续更新不同的值,就可以获得不同的输出。

过程抽象背后的原理是什么呢?

将任何重复性的工作,抽象化,然后我们写代码把它编成一个过程,我们要把变量变成输入,也就是page变成输入,把URL变成输出。

过程是什么呢?

指的是过程指的是获取输入,输入可能不止一种,对这些输入进行处理,并得出输出结果。

这个抽象过程可以用这个表达式表示:

def<name>(<parameters>):
<block>

block在定义中是缩进的,我们喜欢空四格。下面block每一行都需要缩进四格,如果没有缩四格代表block结束。

我们下面开始过程化:

page=…contents of some web page…

start_link=page.find('<a href=')

start_quote=page.find('"',start_link)

end_quote=page.find('"',start_quote+1)

URL=page[start_quote+1:end_quote]

print URL

上面是在一个网页中搜索到的第一个URL

为了搜索相同的第二个我们可以再写一次:

page=page[end_quote: ]

start_link=page.find('<a href=')

start_quote=page.find('"',start_link)

end_quote=page.find('"',start_quote+1)

URL=page[start_quote+1:end_quote]

def get_next_target(s):

start_link=s.find('<a href=')

start_quote=s.find('"',start_link)

end_quote=s.find('"',start_quote+1)

URL=s[start_quote+1:end_quote]

return(URL,end_quote)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 前言 作为一名合格的数据分析师,其完整的技术知识体系必须贯穿数据获取、数据存储、数据提取、数据分析、数据挖掘、...
    whenif阅读 18,179评论 45 523
  • 一个简单的搜索引擎 该搜索引擎具有以下功能:通过一个种子链接不断爬取网页,可以指定爬取网页的层数,以此来控制搜索的...
    丁昆朋阅读 1,904评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,385评论 19 139
  • 给Array添加延展
    小明2021阅读 3,328评论 0 0
  • 现在越来越多的人认为女性应该独立,不论是经济还是感情,不依赖任何人。可是我有时候觉得独立会让一颗漂泊的心特别的...
    外表安静实则野蛮的小女子阅读 3,290评论 2 0