【问题标题】:How to use file_get_contents to find 'a' and click 'a' to get inner contents如何使用 file_get_contents 查找“a”并单击“a”以获取内部内容
【发布时间】:2015-05-02 18:26:21
【问题描述】:

我正在制作一个爬虫来从 pakwheels.com 获取数据,我能够通过这段代码从这个网站获取数据

<?php 

    for ($y = 1; $y <= 5; $y++) {
        $pakwheels = file_get_contents('http://www.pakwheels.com/used-cars/search/-/?page=' . $y . '');
        $file2 = 'pakwheels.txt';
        file_put_contents($file2 , $pakwheels, FILE_APPEND);
    } 

?>

但是要求改变了,现在我想先从 http://www.pakwheels.com/used-cars/search 我已经在做。问题是我想要一个逻辑,当我从第一页获取内容时,它将单击列表视图中列出的广告(标题)的 href a 链接并使用文件获取内容来保存整个广告的内容然后返回主页,即http://www.pakwheels.com/used-cars/search?page=1 并检索第二个广告,依此类推。

我也在做 ajax a.clicked 函数,但我无法达到结果。

如果您想了解更多信息。我也会提供这些。

【问题讨论】:

  • 为您指明某种方向,而不给您一个充实的答案。你可以找到你想要的链接,提取 URL,然后使用 CURL 或其他任何东西来获取该页面的内容并使用它做你想做的事情。请记住,您也无法在这些页面上使用基于 JavaScript 的功能。

标签: php ajax web-crawler


【解决方案1】:

为此使用PHP cURLPHP DOMDocument

libxml_use_internal_errors(true);
for ($y = 1; $y <= 5; $y++) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, 'http://www.pakwheels.com/used-cars/search/-/?page=' . $y);
    $searchResults = curl_exec($ch);

    // save $searchResults here to a file or use DOMDocument to filter what you need

    $doc = new DOMDocument();
    $doc->loadHTML($searchResults);
    $links = $doc->getElementsByTagName('a');
    foreach($links as $link) {
        if($link->getAttribute('class') === 'car-name') {
            curl_setopt($ch, CURLOPT_URL, 'http://www.pakwheels.com' . $link->getAttribute('href'));
            $details = curl_exec($ch);

            // save $details here to a file or use DOMDocument to filter what you need

        }
    }
    curl_close($ch);
}

如果您需要对此进行进一步解释,请随时提出;-)

【讨论】:

  • 谢谢兄弟,但我不明白这段代码在做什么。你能解释一下吗
  • 我循环(和你一样)5次:首先使用cURL(google it)获取搜索结果的来源,然后我们需要获取所有链接(你说你想要每个“广告”的信息),我们使用 DOMDocument 的目的。到汽车的链接都有“汽车名称”类,所以如果它是我们需要的链接,我们使用它作为指示。之后我们再次使用 cURL 来获取单车信息页面的内容 :-)
  • 谢谢兄弟,你能告诉我我可以将此代码应用到另一个网站,如 olx.com.pk/cars 和 carmudi.pk/cars
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多