李亮1975重庆
语料库快乐军政委
原创《语料搜集:桌面级的网页抓取技术与工具》
作者:李亮
日期:2012年4月15日
作者:李亮
日期:2012年4月15日
网页抓取是语料搜集的一种形式,而网页抓取方面的工具都是快速下载和海量下载,所以,大型网站往往有防止”被爬虫爬“的机制呢, 例如广东外语外贸大学的网站就有”反爬虫机制“的,我用"wget.exe -r www.gdufs.edu.cn"进行下载整个广外网站的时候,几秒钟之后我是用的爬虫软件“wget.exe”就被断开了连接,因为人的鼠标操作是不会这么快的(人工打开一个网页,在互联网的底层,原则上与“下载一个网页”是完全一致)。在"wget.exe -r www.gdufs.edu.cn"的“-r”就是recursive,就是逐级深入地自动识别链接与抓取,如果没有这个参数的话,wget.exe就只抓取“首页”。Google网站也有“反爬虫机制”,不要说你用wget.exe之类的爬虫软件了,你就是自己点鼠标点得很快,很持续的话,Google 都会弹出一个拦截的页面,让你输入“图片上的几个字母”,它说以此来识别你是不是“恶意软件或病毒或自动机器人”。不过,四川外语学院之类的网站并没有 “反爬虫机制”的,可以无限快地持续抓取的,所以,“是否要反爬虫”是后台管理员的网站开发制度规划与自身利益(链条)来决定的。
不过,为了突破“反爬虫机制”,网页抓取工具一般也有一些特别的功能设置来突破或欺骗被抓取的网站呢。例如,可以设置抓取的时间间隔为若干秒,甚至设置时间间隔为若干秒到若干秒之间进行随机波动而貌似是人在手工点。再例如,爬虫往往可以设置自己为IE浏览器或其他应用软件呢(也就是伪装为“其他某种软件”),因为互联网上的两个电脑之间通过某种软件进行TCP/IP通信连接的时候,要经过“相互三次握手”与“相互交换名片”这样的环节呢, 而爬虫就可以把自己的“名片”写成其他的对方网站乐意看到的“名片”,因为如果我们直接编程设计了一款网页下载抓取的软件是很容易的,但是在进行Http 连接的时候,本来要发送一个http信息头的里面应该包含“自己是谁”这个信息段的,这个信息段如果没有编程开发的时候设置了的话就是空白的,虽然一般网站也容许“http的应用软件的身份的信息头”为空白的,但是,对方因此知道了“你什么也不是”。所以,“爬”与“反爬”与“反反爬”是争锋相对的。总体来说,只要把爬虫的抓取速度降低下来,就容易畅通无阻了。所以,user-agent是个非常关键的技术概念,自己的user-agent这个信息(也就是上面提到的所谓的“名片”)可以被自己胡乱设置或刻意设置的,以此来欺骗你想要欺骗的互联网上的网站哟,下面的三个链接是较详细的解释,有必要读一读的……
http://www.iefans.net/user-agent-weizhuang-liulanqi-caozuoxitong/
http://whatismyipaddress.com/user-agent
http://msdn.microsoft.com/en-us/library/ms537503%28VS.85%29.aspx
你需要自己看自己的user-agent的情况的话,可以访问: http://www.httpuseragent.com/
因此,user-agent是比较固定格式的一个字符串,这里有专门的网站提供这样的较完整列表,便于随时调用
http://www.user-agents.org/
http://www.useragentstring.com/pages/useragentstring.php
网页抓取工具有商业版系列和免费版系列,最著名的商业版都在国内有它们的破解版(也称为 “绿色版”或“正式版”或“特别版”或“注册版”或“汉化版”或“便携版”或精简版“,这些都是”破解版“的”行业的委婉的表达“)。商业版一般都是Windows操作方式的,有些也同时支持DOS执行或写个bat文件让它们以“获取命令行的多个参数”的方式执行。免费版其实在功能上并不逊色于商业版,只是不如商业版的广告宣传那么强劲和那么那么多的贴心的甚至冗余的功能设计。
网页爬虫,也叫做“离线浏览工具” ,在各种软件下载中心或软件下载网站都有这个软件分类:“离线浏览”。例如:
http://www.xdowns.com/soft/1/69/
http://dl.pconline.com.cn/sort/91.html
http://www.onlinedown.net/sort/43_1.htm
http://www.hanzify.org/category/36.html
看看上面的网页,都有“下载量的排行榜”,都基本反映了最强大最热门的这类软件是哪些。我印象中,最强大的商业版的网页爬虫是:
Offline Explorer 官方网址是:http://www.metaproducts.com/mp/mpProducts_List.asp
Teleport Pro 官方网址是: http://www.tenmax.com/teleport/pro/home.htm
WebCopier 官方网址是: http://www.maximumsoft.com/
我印象中的,最强大的完全免费版的网页爬虫是:
HTTrack 免费而强大,官方提供DOS版和Win版 官方网址是: http://www.httrack.com/
cURL and libcurl 免费而强大,官方提供dos和win版 官方网址是: http://curl.haxx.se/
WinWGet 内含wget的win版,预置多种user agents 官方网址是: http://www.cybershade.us/winwget/
IRobotSoft 免费而强大,可与数据库交互 官方网址是: http://www.irobotsoft.com/
它们都可以被直接集成到任何人自己用各种编程语言开发的软件中去,因为各种编程语言都有execute()或run()或shell()这样的“让外部执行文件运行起来的函数或指令”。
我个人最喜欢的爬虫是“wget” ,它的官方网址是:http://www.gnu.org/software/wget/
而WinWGet就是包含了wget的外壳程序,因为wget是个单文件的exe,不需要安装,自己写最简单的一两个参数就让它立即处于疯狂的下载状态了。
我们个人用的“网页爬虫软件”属于“桌面级”的,一般没有跟标准数据库进行对接 ,而只是下载与分类而已;而服务器上运行的,往往需要跟标准数据库进行对接,并且需要同时生成“索引”来快速搜索。 中型和大型的数据库管理系统(例如,免费的MySQL,商业版的Microsoft SQL Server和商业版的Oracle)都从2005年左右就开始了对网页HTML和XML都进行直接的逐个元素标签的存储,同时在SQL查询语句中都新增了对XML的“特殊查询”,因为最近七八年之内的HTML网页都标准化为非常符合XML规范的XHTML了。下面这个链接,就是介绍Microsoft SQL Server 2005的XML强大处理能力……
[FONT=宋体]http://v.youku.com/v_show/id_XNjQ5MDM3Mjg=.html (MS SQL Server 2005[/FONT][FONT=宋体]的XML操纵技能)[/FONT]
免费版的网页抓取工具都普遍提供了“命令行的执行方式” , 就是在DOS窗口输入命令或写个bat文件让它执行。bat文件就是一个txt文件,你在“桌面”新建一个“纯文本文件”,然后在里面写 “c:\wget.exe http://www.baidu.com”,然后保存退出,然后点右键把当前的纯文本文件的文件扩展名改为“.bat”就能双击执行了,也就是给c盘下的wget.exe传递了第一个参数。当然,如果Windows是“不显示文件扩展名”的话就需要看下面的链接来让Windows显示出文件扩展名而被你手工修改。
http://blog.csdn.net/dlyhlq/article/details/2875348
http://www.qudong.com/OS/Windows_Vista/2009/0728/40849.html
http://www.downyi.com/article/article_24_1.html
以上的 桌面级爬虫软件都可以从简单到复杂地设置“抓取对象的特征”,例如:只抓取某种文件类型,只抓取某种文件大小的文件,只抓取指定的创建时间或修改时间的那些网页,只抓取网址的字符串满足某种特征的网页。此外,还可以设置是否“跨主机”抓取,就是要不要从一个网站顺着它页面的链接而跑到其他网站上去继续抓取。
以上都是“独立软件形式的爬虫”,而互联网上也有Web as Corpus这种理念的专门网站,例如
http://www.webcorp.org.uk/live/index.jsp
中山大学的校园网首页有专门的“反爬虫”的robots.txt呢,就是来告诉自动爬来的遵守职业规范的“标准爬虫”不要爬某些页面的……
http://www.sysu.edu.cn/robots.txt
其他的关于robots.txt的资料如下……
http://www.javascriptkit.com/howto/robots.shtml
http://robotstxt.info
http://www.searchtools.com/robots/robots-txt.html
Last edited: