使用PHP cURL从另一个页面显示div

时间:2018-07-03 21:12:56

标签: php curl

因此,我试图显示另一个页面(例如Kinguin)中的div,如标题PHP cURL中所述。现在,我想出了一种使用图像来处理图像的方法(简单的YT教程),但是我无法使用绑定了类的div来进行处理。 一些支持页面似乎使我朝着正确的方向前进,但是过了一会儿,似乎变得复杂了。

是我正确选择标题的方式,还是应该使用AJAX例如。

pipenv run c:\path\to\main.py

2 个答案:

答案 0 :(得分:0)

要解析div元素,可以使用解析器。 那里有很多图书馆。 一个是SimpleHtml Dom。具有选择器功能,如下所示:

// Find all images 
foreach($html->find('img') as $element)  echo $element->src . '<br>';

// Find all links 
foreach($html->find('a') as $element) echo $element->href . '<br>';

一些JQuery选择器样式的php html解析器也可用。 一种是(但我尚未使用过):https://github.com/tburry/pquery

您还可以在前端站点中使用AJAX方式,但是在这种情况下,由于域不同,您将不得不使用jsonp。您可以通过jsonp获取html,将其放入页面中的隐藏容器中作为临时容器,然后解析该容器中的数据。

我的偏好是在服务器端执行任务。 原因是:

a) It will not put pressure on the client computer/device. 
   As the browser page will have to pull data from another domain.
b) You can cache the data in server.
c) Parsing is costly. In some device the browser may go irresponsive.
d) In serverside you will be able handle the exceptions(if any occurs, like page unavailable, html structure of that page got changed etc) better than in a client's browser.

答案 1 :(得分:0)

这里的解决方案实际上取决于您要提取的内容。 preg_match_all是使用正则表达式的字符串匹配函数。您可以找到here的文档,还可以使用RegExr这样的浏览器应用测试正则表达式。调整后的preg_match_all调用可能看起来像这样:

preg_match_all('@<div class="some-class">[^<]+</div>@', $result, $matches);

但是,由于要拉下<div>标签和大概所有内容,因此您可能需要研究类似DOMDocument的html解析库:

$dom = new DOMDocument(); $dom->loadHTML($result); 
foreach ($dom->getElementsByTagName('div') as $div) {
    $class =  $item->getAttribute("class");
    if (strpos($class, 'some-class') !== false) {
        echo "<div>";
        echo $div->nodeValue;
        echo "</div>";
    } 
}

如果您不想使用DOMDocument(可以理解,考虑到它是为XML设计的,则可以理解),然后尝试寻找作曲家库。 https://packagist.org/?query=html%20parser