用python写爬虫软件,要用到什么程度的数学知识?
1 爬虫技术研究综述 引言? 随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。
搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。
但是,这些通用性搜索引擎也存在着一定的局限性,如:? (1) 不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。
? (2) 通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。
? (3) 万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频/视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。
? (4) 通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。
? 为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。
聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。
与通用爬虫(general?purpose web crawler)不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。
? 1 聚焦爬虫工作原理及关键技术概述? 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。
传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件,如图1(a)流程图所示。
聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。
然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止,如图1(b)所示。
另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。
? 相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题:? (1) 对抓取目标的描述或定义;? (2) 对网页或数据的分析与过滤;? (3) 对URL的搜索策略。
? 抓取目标的描述和定义是决定网页分析算法与URL搜索策略如何制订的基础。
而网页分析算法和候选URL排序算法是决定搜索引擎所提供的服务形式和爬虫网页抓取行为的关键所在。
这两个部分的算法又是紧密相关的。
? 2 抓取目标描述? 现有聚焦爬虫对抓取目标的描述可分为基于目标网页特征、基于目标数据模式和基于领域概念3种。
? 基于目标网页特征的爬虫所抓取、存储并索引的对象一般为网站或网页。
根据种子样本获取方式可分为:? (1) 预先给定的初始抓取种子样本;? (2) 预先给定的网页分类目录和与分类目录对应的种子样本,如Yahoo!分类结构等;? (3) 通过用户行为确定的抓取目标样例,分为:? a) 用户浏览过程中显示标注的抓取样本;? b) 通过用户日志挖掘得到访问模式及相关样本。
? 其中,网页特征可以是网页的内容特征,也可以是网页的链接结构特征,等等。
? 现有的聚焦爬虫对抓取目标的描述或定义可以分为基于目标网页特征,基于目标数据模式和基于领域概念三种。
? 基于目标网页特征的爬虫所抓取、存储并索引的对象一般为网站或网页。
具体的方法根据种子样本的获取方式可以分为:(1)预先给定的初始抓取种子样本;(2)预先给定的网页分类目录和与分类目录对应的种子样本,如Yahoo!分类结构等;(3)通过用户行为确定的抓取目标样例。
其中,网页特征可以是网页的内容特征,也可以是网页的链接结构特征,等等。
?
网络爬虫软件都有哪些比较知名的
百度Googlebingsougou--------------------------------------------上面的搜索引擎都是建立在爬虫技术的基础上的,搜索关键词可以找到你想要的!但如果你想要爬取特定的站点内容,就需要自己学习代码编写爬虫了
可不可以写一个爬虫,下载自己想下载的电影?
搜索引擎使用网络爬虫寻找网络内容,网络上的HTML文档使用超链接连接了起来,就像织成了一张网,网络爬虫也叫网络蜘蛛,顺着这张网爬行,每到一个网页就用抓取程序将这个网页抓下来,将内容抽取出来,同时抽取超链接,作为进一步爬行的线索。
网络爬虫总是要从某个起点开始爬,这个起点叫做种子,你可以告诉它,也可以到一些网址列表网站上获取网页抓取/数据抽取/信息提取软件工具包MetaSeeker是一套完整的解决方案,里面有定题网络爬虫,也叫聚焦网络爬虫,这种爬虫抓取下来一个页面后并不抽取所有的超链接,而是只找主题相关的链接,笼统的说就是爬行的范围是受控的。
网络爬虫实现代码主要集中在MetaSeeker工具包中的DataScraper工具。
可以从 gooseeker网站下载下来看...
Python3.xx中写爬虫,下载图片除了urlretrieve方法,还有什么库的什么...
Part 1. urllib2urllib2是Python标准库提供的与网络相关的库,是写爬虫最常用的一个库之一。
想要使用Python打开一个网址,最简单的操作即是:your_url = "http://publicdomainarchive.com/"html = urllib2.urlopen(your_url).read()12这样所获得的就是对应网址(url)的html内容了。
但有的时候这么做还不够,因为目前很多的网站都有反爬虫机制,对于这么初级的代码,是很容易分辨出来的。
例如本文所要下载图片的网站http://publicdomainarchive.com/,上述代码会返回HTTPError: HTTP Error 403: Forbidden错误。
那么,在这种情况下,下载网络图片的爬虫(虽然只有几行代码,但一个也可以叫做爬虫了吧,笑),就需要进一步的伪装。
要让爬虫伪装成浏览器访问指定的网站的话,就需要加入消息头信息。
所谓的消息头信息就是在浏览器向网络服务器发送请求时一并发送的请求头(Request Headers)信息和服务器返回的响应头(Response Headers)信息。
例如,使用FireFox打开http://publicdomainarchive.com/时所发送的Request Headers的部分内容如下:Host:"publicdomainarchive.com/"User-Agent:"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"...1234还有一些其他属性,但其中伪装成浏览器最重要的部分已经列出来了,即User-Agent信息。
要使用Headers信息,就不能再仅仅向urlopen方法中传入一个地址了,而是需要将HTTP Request的Headers封装后传入:headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}req = urllib2.Request(url = url, headers = headers)content = urllib2.urlopen(req).read()123这样,就获得了网站的html内容。
接下来,就需要从html去获取图片的链接。
Part 2. HTMLParserHTMLParser是Python提供的HTML解析库之一。
但Python提供的这个类中很多方法都没有实现,因而基本上这个库只负责进行解析,但解析完了什么都不做。
所以如果需要对HTML中的某些元素进行加工的话,就需要用户自己去实现其中的一些方法。
本文仅实现其中的handle_starttag方法:class MyHTMLParser(HTMLParser): #继承HTMLParser类def __init__(self): #初始化HTMLParser.__init__(self) def handle_starttag(self, tag, attrs):#参数tag即由HTMLParser解析出的开始标签,attrs为该标签的属性if tag == "img": #下载图片所需要的img标签if len(attrs) == 0: passelse: for (variable, value) in attrs: #在attrs中找到src属性,并确定其是我们所要下载的图片,最后将图片下载下来(这个方法当然也有其他的写法)if variable == "src" and value[0:4] == 'http' and value.find('x') >= 0:pic_name = value.split('/')[-1] print pic_namedown_image(value, pic_name)123456789101112131415Part 3. 下载图片从handle_starttag方法中,我们已经获得了图片的url,那么,最后一步,我们要下载图片了。
当然,要获得网络上的图片,自然也需要向服务器发送请求,一样需要用到urllib2这个库,也需要用到上面所用到的请求头。
以下是down_image()方法的主要代码:binary_data = urllib2.urlopen(req).read()temp_file = open(file_name, 'wb')temp_file.write(binary_data)temp_file.close()1234因为这次打开的网址是个图片,所以urllib2.urlopen(req).read()所获取的就是图片的数据,将这些数据需要以二进制的方式写入本地的图片文件,即将图片下载下来了。
因为图片的url的最后一部分是图片的名字,所以可以直接用做本地的文件名,不用担心命名冲突,也不用担心后缀不符,很是方便。
Part 4. getFreeImages.py这个下载图片的脚本的完整代码如下:import urllib2,osfrom HTMLParser import HTMLParser class MyHTMLParser(HTMLParser):def __init__(self):HTMLParser.__init__(self) #self.links = {}def handle_starttag(self, tag, attrs):#print "Encountered the beginning of a %s tag" % tagif tag == "img": if len(attrs) == 0: passelse: for (variable, value) in attrs: if variable == "src" and value[0:4] == 'http' and value.find('x') >= 0:pic_name = value.split('/')[-1] print pic_namedown_image(value, pic_name)def down_image(url,file_name):global headersreq = urllib2.Request(url = url, headers = headers)binary_data = urllib2.urlopen(req).read()temp_file = open(file_name, 'wb')temp_file.write(binary_data)temp_file.close()if __name__ == "__main__":img_dir = "D:\\Downloads\\domain images"if not os.path.isdir(img_dir):os.mkdir(img_dir)os.chdir(img_dir) print os.getcwd()url = ""headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}all_links = []hp = MyHTMLParser() for i in range(1,30):url = 'http://publicdomainarchive.com/public-domain-images/page/' + str(i) + '/'req = urllib2.Request(url = url, headers = headers)content = urllib2.urlopen(req).read()hp.feed(content)hp.close()1234567891011121314151617181920212223242526272829303132333435...
什么是网络爬虫
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。
另外一些不常使用的名字还有蚂蚁,自动索引,模拟程序或者蠕虫。
基于目标数据模式的爬虫针对的是网页上的数据,所抓取的数据一般要符合一定的模式,或者可以转化或映射为目标数据模式。
另一种描述方式是建立目标领域的本体或词典,用于从语义角度分析不同特征在某一主题中的重要程度。
网页爬虫的高层体系结构一个爬虫不能像上面所说的,仅仅只有一个好的抓取策略,还需要有一个高度优化的结构。
Shkapenyuk和Suel(Shkapenyuk和Suel,2002)指出:设计一个短时间内,一秒下载几个页面的颇慢的爬虫是一件很容易的事情,而要设计一个使用几周可以下载百万级页面的高性能的爬虫,将会在系统设计,I/O和网络效率,健壮性和易用性方面遇到众多挑战。
网路爬虫是搜索引擎的核心,他们算法和结构上的细节被当作商业机密。
当爬虫的设计发布时,总会有一些为了阻止别人复制工作而缺失的细节。
人们也开始关注主要用于阻止主要搜索引擎发布他们的排序算法的“搜索引擎垃圾邮件”。
爬虫身份识别网络爬虫通过使用http请求的用户代理(User Agent)字段来向网络服务器表明他们的身份。
网络管理员则通过检查网络服务器的日志,使用用户代理字段来辨认哪一个爬虫曾经访问过以及它访问的频率。
用户代理字段可能会包含一个可以让管理员获取爬虫更多信息的URL。
邮件抓取器和其他怀有恶意的网络爬虫通常不会留任何的用户代理字段内容,或者他们也会将他们的身份伪装成浏览器或者其他的知名爬虫。
对于网路爬虫,留下用户标志信息是十分重要的;这样,网络管理员在需要的时候就可以联系爬虫的主人。
有时,爬虫可能会陷入爬虫陷阱或者使一个服务器超负荷,这时,爬虫主人需要使爬虫停止。
对那些有兴趣了解特定爬虫访问时间网络管理员来讲,用户标识信息是十分重要的。
...
转载请注明出处51数据库 » 写爬虫用什么软件下载