就像我们人和人之间认识,握手相识,不同国家的人可以说着不一样的话,但只要说英语这个通用语言,大部分的人都理解。互联网之间的服务器也是一样,它们之间使用socket,http,udp等机器间的“语言”进行会话。 做为爬虫,它相当于一个小型浏览器,来模拟人来访问某个网站的链接,使用GET方法告诉对方服务器,要获取什么资源,网页还是文件。 先等一下,在深入讨论抓取网站之前,我们需要对目标网站的目录结构进行一定的了解。 Google,百度们做为公众的搜索引擎,需要遵守robots协议,也就是说被抓取的网站在根下保存一个robots.txt告诉搜索引擎的爬虫,哪些目录可以抓,哪些目录是不允许抓取的,禁止公开。比如网站后台,某些不宜公开的文件。 另外还有一个Sitemap的关键字告诉搜索引擎,网站的目录结果是啥样的。 以下是QQ的robots.txt(http://www.qq.com/robots.txt)内容: User-agent: * Disallow: Sitemap: http://www.qq.com/sitemap_index.xml 我们看到,它是完全公开的。可以让自家的搜狗,Google,百度等们全部抓取,还告诉搜索引擎自己的网站地图(Sitemap)地址,可以更全面的获取内容。 再看看淘宝的robots.txt(http://www.taobao.com/robots.txt) User-agent:Baiduspider Allow:/article Allow:/oshtml Allow:/wenzhang Disallow:/product/ Disallow:/
User-Agent:Googlebot Allow:/article Allow:/oshtml Allow:/product Allow:/spu Allow:/dianpu Allow:/wenzhang Allow:/oversea Disallow:/
User-agent:Bingbot Allow:/article Allow:/oshtml Allow:/product Allow:/spu Allow:/dianpu Allow:/wenzhang Allow:/oversea Disallow:/
User-Agent:360Spider Allow:/article Allow:/oshtml Allow:/wenzhang Disallow:/
User-Agent:Yisouspider Allow:/article Allow:/oshtml Allow:/wenzhang Disallow:/
User-Agent:Sogouspider Allow:/article Allow:/oshtml Allow:/product Allow:/wenzhang Disallow:/
User-Agent:Yahoo! Slurp Allow:/product Allow:/spu Allow:/dianpu Allow:/wenzhang Allow:/oversea Disallow:/
User-Agent:* Disallow:/
我们看到,淘宝网对不同的搜索引擎的待遇不太一样,但大多数允许抓取文章,对Google,Yahoo等限制规则比较少,对来路不明的爬虫,限制TA们抓取。
感兴趣的朋友可以多试一些网站,一些没有此文件的站点想必是不设限制抓取,比如新浪网。
回来说我们写的爬虫,大部分是想获取某些内容,并不是搜索引擎一样的全部抓取。如果对方网站有robots.txt,可以遵守对方设置的限制,做一个文明的蜘蛛:)
我们使用PHP来写爬虫程序。在PHP中可使用fopen,file,file_get_contens函数获取远端内容。格式如下: file/fopen/file_get_contents($url) file和fopen函数需要在php.ini中打开远端访问,file_get_contents函数则是fopen和fclose的封装。 下面是使用file_get_contents来写一个轻量爬虫函数,后面使用DOMDocment来处理HTML标签。代码如下: |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|