PHP web scraper获取页面的一部分

时间:2017-09-26 20:22:12

标签: php web-scraping simple-html-dom php-curl

我用PHP开发了一个Web scraper,我遇到了数据处理速度慢的问题。当我加载网页时,我收到了太多不必要的数据。 有没有办法收到整个页面但只收件?特定的HTML标签及其内容?

现在我有这样的代码:     

$html = file_get_html('http://www.google.com/');
$title = $html->find('title', 0);
$image = $html->find('img', 0);

echo $title->plaintext."<br>\n";
echo $image->src;
?>

1 个答案:

答案 0 :(得分:0)

  

低数据处理速度的问题

真的? IME DOM解析器工作得很好。 假设你已经确认这是你的困境的原因,那么有3个明显的解决方案:

  • 如果您正在抓取多个页面,请在所有CPU上分配工作负载
  • 使用基于偶数的解析器而不是DOM解析器(此时代码变得更加复杂)并丢弃您不需要的跟踪内容。
  • 升级您的硬件

虽然HTTP支持范围查询(即您只能获取页面的一部分),但您不知道标记块与字节流的对齐位置 - 因此您不能只获取页面的一部分。

OTOH如果您还没有费心去检查问题是否与代码执行有关,那么它更可能是网络延迟出现缓慢;你没有告诉我们你是如何获取页面的,你没有向我们展示任何检索内容的代码(在本机PHP中有“file_get_html”)。

如果问题实际上是延迟,那么解决方案是运行批处理以一次异步提取多个页面 - 使用curl_multi_exec