【发布时间】:2011-04-01 12:02:15
【问题描述】:
我做了一个屏幕抓取模块,它工作得很好,但有一定的限制。现在我想删除这些边界,但我得到了如此不可预测和不同的错误。在你想到任何事情之前,让我看看实际上是什么。最初,我使用屏幕抓取来检索一组关键字(搜索内容)谷歌的所有搜索引擎(如 co.in/co.uk/nl/de/com)的结果。
但现在我不得不在一个循环中抓取多个搜索引擎和多个关键字的逻辑。
让我们用一个例子来看看:
keyword se company rank
telephony google.co.in airtel 01
telephony google.co.in bsnl 04
telephony google.co.in aircel 06
telephony google.co.in idea 03
mobile op google.co.uk airtel 09
mobile op google.co.uk bsnl 04
等等.. 超过 6 个关键字和所有显示的搜索引擎以及所有公司。
最初我为一个关键字、se 和所有公司检索它。但现在我必须列出所有关键字、se、公司。我只是使用循环来做到这一点。但我遇到了这些错误:
- 分配的内存 343322111 字节溢出(...[删除这个我使用了 ini_set('memory') func]
- 在求和请求后,谷歌使用了验证码。
要删除验证码,我使用了 sleep 或 usleep() 但它没有解决目的。atlast 错误:连接重置。
我不能在 usleep func 中使用 30 秒或更长时间。检索信息需要几个小时。我的代码搜索数据为 5 页谷歌,这意味着 50responses.Lib 使用
simple_html_dom.php
它适用于 1 页页面,但不适用于超过 3 页。我应该做什么/使用?
【问题讨论】:
-
您是否尝试将时间限制设置为 0 ? “设置时间限制(0);”。对于文档:php.net/manual/en/function.set-time-limit.php(我猜默认是 30 秒)
-
是的,它被使用了。因为只有我能够在一页上执行它。因为可能存在带宽有限的情况。
标签: php screen-scraping