1. 如何自己写一个网络爬虫 网络爬虫以叫网络蜘蛛,网络机器人,这是一个程序,其会自动的通过网络抓取互联网上的网页,这种技术一般可能用来检查你的站点上所有的链接是否是都是有效的 。当然,更为高级的技术是把网页中的相关数据保存下来,可以成为搜索引擎 。
从技相来说,实现抓取网页可能并不是一件很困难的事情,困难的事情是对网页的分析和整理,那是一件需要有轻量智能,需要大量数学计算的程序才能做的事情 。下面一个简单的流程:
在这里,我们只是说一下如何写一个网页抓取程序 。首先我们先看一下,如何使用命令行的方式来找开网页 。telnet somesite.com 80
get /index.html 文法,甚至还需要解析javascript,因为现在的网页使用ajax的越来越多了,而很多网页内容都是通过ajax技术加载的,因为,只是简单地解析html
2. 用python写网络爬虫 书怎么样 用python写网络爬虫 书怎么样
爬虫的重点是在Python之外的 。确切说是一些前端和部分后端技术(cookie之类的)以及一些HTTP协议相关知识 。
而对于python而言,只是获取内容(HTTP请求)和文本处理(抓内容),基本上看俩模块文档看几个框架文档都够用了 。
【怎么写网络爬虫】至于更高级的,比如挂phatomjs之类,主要工作都在于js而不是python了 。
所以基本上你搜到的买到的教程,大都落伍了,既赶不上前端的发展,也赶不上python模块的演进 。
3. 各种语言写网络爬虫有什么优点缺点 我用 PHP 和 Python 都写过爬虫和正文提取程序 。
最开始使用 PHP 所以先说说 PHP 的优点:
1.语言比较简单,PHP 是非常随意的一种语言 。写起来容易让你把精力放在你要做的事情上,而不是各种语法规则等等 。
2.各种功能模块齐全,这里分两部分:
1.网页下载:curl 等扩展库;
2.文档解析:dom、xpath、tidy、各种转码工具,可能跟题主的问题不太一样,我的爬虫需要提取正文,所以需要很复杂的文本处理,所以各种方便的文本处理工具是我的大爱 。;
总之容易上手 。
缺点:
1.并发处理能力较弱:由于当时 PHP 没有线程、进程功能,要想实现并发需要借用多路服用模型,PHP 使用的是 select 模型 。实现其来比较麻烦,可能是因为水平问题我的程序经常出现一些错误,导致漏抓 。
再说说 Python:
优点:
1.各种爬虫框架,方便高效的下载网页;
2.多线程、进程模型成熟稳定,爬虫是一个典型的多任务处理场景,请求页面时会有较长的延迟,总体来说更多的是等待 。多线程或进程会更优化程序效率,提升整个系统下载和分析能力 。
3.GAE 的支持,当初写爬虫的时候刚刚有 GAE,而且只支持 Python ,利用 GAE 创建的爬虫几乎免费,最多的时候我有近千个应用实例在工作 。
缺点:
1.对不规范 HTML 适应能力差:举个例子,如果一个页面里面同时有 GB18030 字符集的中文和 UTF-8 字符集的中文,Python 处理起来就没有 PHP 那么简单,你自己需要做很多的判断工作 。当然这是提取正文时的麻烦 。
Java 和 C++ 当时也考察过,相对脚本语言比较麻烦,所以放弃 。
总之,如果开发一个小规模的爬虫脚本语言是个各方面比较有优势的语言 。如果要开发一个复杂的爬虫系统可能 Java 是个增加选项, C++ 我感觉写个模块之类的更加适合 。对于一个爬虫系统来说,下载和内文解析只是基本的两个功能 。真正好的系统还包括完善的任务调度、监控、存储、页面数据保存和更新逻辑、排重等等 。爬虫是一个耗费带宽的应用,好的设计会节约大量的带宽和服务器资源,并且好坏差距很大 。