如何获取域上的所有网页

时间:2012-12-17 21:17:24

标签: php dns subdomain web-crawler

我正在创建一个简单的 web spider ,我想知道是否有一种方法可以在我的PHP代码中触发,我可以获取域中的所有网页...

例如,假设我想在Stackoverflow.com上获取所有网页。这意味着它会得到: https://stackoverflow.com/questions/ask pulling webpages from an adult site -- how to get past the site agreement? https://stackoverflow.com/questions/1234214/ Best Rails HTML Parser

所有链接。我怎么能得到它。或者是否有 API DIRECTORY 可以让我获得该功能?

还有一种方法可以获得所有子域吗?

顺便说一下抓取工具如何抓取没有SiteMapsSyndication feeds的网站?

干杯。

5 个答案:

答案 0 :(得分:2)

如果某个网站希望您能够这样做,他们可能会提供Sitemap。使用站点地图的组合并按照页面上的链接,您应该能够遍历站点上的所有页面 - 但这完全取决于站点的所有者以及他们如何访问它们。

如果网站希望您这样做,那么您无法解决此问题。 HTTP没有提供列出目录内容的任何标准机制。

答案 1 :(得分:1)

你需要破解服务器抱歉。

您可以做的是,如果您拥有域名www.my-domain.com,您可以在其中放置一个PHP文件,用作请求点播文件。您将需要编写某种代码的php文件可以查看文件夹FTP Wise。 PHP可以连接到FTP服务器,所以这是一种方法:)

http://dk1.php.net/manual/en/book.ftp.php

您可以使用PHP读取dirs文件夹并将其作为数组返回。我能做的最好。

答案 2 :(得分:1)

正如您所说,您必须遵循所有链接。

要做到这一点,您必须首先检索stackoverflow.com,轻松:file_get_contents ("http:\\stackoverflow.com")

然后解析其内容,寻找链接:<a href="question/ask">,不是那么容易。

您将这些新URL存储在数据库中,然后解析后面的URL,这将为您提供一组全新的URL,并对其进行解析。很快你将获得该网站的绝大部分内容,包括sub1.stackoverflow.com等内容。这称为爬行,实现起来非常简单,但一旦掌握了所有数据,就无法轻松检索有用信息。

如果您只对某个特定域感兴趣,请务必关闭指向外部站点的链接。

答案 3 :(得分:0)

不,不是你问的方式。

但是,如果您有明确的目标,您可以:

  • 使用“主要”请求获取感兴趣的对象。一些站点提供JSON,XML,... apis来列出这样的对象(例如,SO可以这样列出问题)。然后使用“每对象”请求来获取特定于一个对象的信息

  • 从其他开放(或付费)来源获取信息,例如搜索引擎,目录,“法医”工具,如SpyOnWeb

  • 对网站的结构进行反向工程,例如:您知道/item/<id>会将您带到ID为<id>

    的项目页面
  • 询问网站管理员

请注意,其中一些解决方案可能违反了网站的使用条款。无论如何,这些只是指针,在我的头顶。

答案 4 :(得分:0)

您可以使用WinHTTPTack /。但是不要抨击其他人的网站是礼貌的。

我只是用它来查找断开的链接并快速拍摄。

如果你开始锤击其他人的网站,他们会采取措施。其中一些不会很好(即锤你的)。

只是礼貌。