|
|
1
1
当然,只需使用file_get_contents这样的函数获取起始url的内容( http://nl.php.net/file_get_contents ),使用正则表达式在该页面的内容中查找URL,获取这些URL的内容等等。 Regexp将类似于:
|
|
|
3
0
我只是有一个SQL表,包含我找到的所有链接,以及它们是否已被解析。 然后我用 Simple HTML DOM 为了解析最早添加的页面,尽管它往往会因大页面(500kb+的html)而耗尽内存,但我对其中一些页面使用了正则表达式*。对于我找到的每个链接,我都会在需要解析时将其添加到SQL数据库中,以及找到它的时间。 SQL数据库可以防止数据在出错时丢失,因为我有100000多个链接需要解析,所以我会花很长时间来解析。 我不确定,但是你检查过文件_get_contents()的用户代理了吗?如果它不是你的页面,并且你发出了1000个请求,你可能想要更改用户代理,或者编写你自己的HTTP下载器,或者使用库中的一个(我使用Zend框架中的一个),但是cURL等可以很好地工作。如果您使用自定义用户代理,它允许管理员查看日志以查看有关您的机器人的信息。(我倾向于把我爬行的原因和一个接触点放在我的身上)。 *我使用的正则表达式是:
更好的解决方案(来自Gumbo)可能是:
|
|
|
4
0
PHP Snoopy库有一系列内置函数,可以准确地完成所需的功能。 http://sourceforge.net/projects/snoopy/ 您可以使用Snoopy下载页面本身,然后它还有另一个功能来提取该页面上的所有URL。它甚至会将链接更正为完整的URI(即,它们不只是相对于页面所在的域/目录)。 |
|
|
5
0
你可以试试下面的方法。看见 this thread 更多细节
|
|
|
6
-1
我建议你把HTML文档和6000个URL放在一起,把它们解析出来,然后循环浏览你得到的列表。在循环中,使用file_get_contents获取当前URL的内容(为此,在服务器上启用file_get_contents时,实际上不需要cURL),再次解析包含的URL,等等。 看起来像这样:
|