如何刮掉多个div?

时间:2015-12-01 03:51:15

标签: php web-scraping scrape scraper

您好我有一堆div我试图从内容中删除内容值,并且我已成功取出其中一个值,结果!但是,我已经碰到了一堵砖墙,我想现在在我已经完成的当前代码中删除它。在这里打砖墙会感激任何帮助。

以下是我目前正在使用的代码。

foreach ($arr as &$value) {

    $file = $DOCUMENT_ROOT. $value;
    $doc = new DOMDocument();
    $doc->loadHTMLFile($file);
    $xpath = new DOMXpath($doc);
    $elements = $xpath->query("//*[contains(@class, 'covGroupBoxContent')]//div[3]//div[2]");

    if (!is_null($elements)) {
      foreach ($elements as $element) {

        $nodes = $element->childNodes;
            foreach ($nodes as $node) {
                $maps = $node->nodeValue;

                echo $maps;
            }
        }
    }
}

我只是希望他们都有单独的输出,我可以回应。

1 个答案:

答案 0 :(得分:1)

我建议您使用Simple HTML DOM。除此之外,我需要查看您正在抓取的HTML示例。

如果您要抓取域外的网站,我建议您将源HTML保存到文件中以供审核和测试。有些网站会进行拼抢,因此您在浏览器中看到的并不是您的刮刀会看到的内容。

另外,我建议通过ini_set()设置随机用户代理。如果您需要一个功能,我有一个。

CREATE OR REPLACE PROCEDURE addi1 (c_cntry_id IN OUT COUNTRIES.COUNTRY_ID%TYPE,
                                       c_cntr_name IN COUNTRIES.COUNTRY_NAME%TYPE, 
                                       c_rgn_id IN COUNTRIES.REGION_ID%TYPE)
IS
l_exst number(1);

begin
  select case 
           when exists
(   select r.region_id from regions r where r.region_id  IN
(SELECT REGION_ID from regions)

                        );
           then 1
           else 0
         end  into l_exst


  if l_exst = 1 
  then
    INSERT INTO countries(COUNTRY_ID, COUNTRY_NAME,REGION_ID)
    values (c_cntry_id, c_cntr_name,c_rgn_id);
  else
    DBMS_OUTPUT.put_line('YOU CANNOT'); 
  end if;
end;
/