在多个站点上使用simplehtmldom进行Web Scraping

时间:2014-04-09 17:41:02

标签: codeigniter web-scraping simple-html-dom

我在最近的网络抓取项目中使用simplehtmldom解析器,该项目实际上正在建立一个比较网站构建与CodeIgniter的价格。该网站必须从不同的购物网站获取产品名称,描述和价格。这是我的代码:

$this->dom->load_file('http://www.site1.com');
$price1 = $this->dom->find("span[itemprop=price]");

$this->dom->load_file('http://www.site2.com');
$price2 = $this->dom->find("div.price");

$this->dom->load_file('http://www.site3.com');
$price3 = $this->dom->find("div.priceBold");

$this->dom->load_file('http://www.site4.com');
$price4 = $this->dom->find("span.fntBlack");

$this->dom->load_file('http://www.site5.com');
$price5 = $this->dom->find("div.price");

上述代码大约需要15-20秒才能将结果加载到屏幕中。当我只尝试一个站点时,它只需要2秒钟。这就是simplehtmldom如何与多个域一起使用?或者有优化方法吗?

1 个答案:

答案 0 :(得分:2)

PHP简单HTML DOM解析器有一些memory leak issue,因此在尝试加载新页面之前,请使用以下命令清除前一页:

$this->dom->clear(); 
unset($this->dom);

如果这没有改变任何内容,那么您的某个网站需要花费很多时间来回复......您将不得不逐一检查以查找罪魁祸首xD