标签: simple-html-dom

使用simpe-html-dom获取元素内容

我正在使用simpile_html_dom来获取html页面元素.我有一些像这样的div元素.我想要的只是在每个div中得到"Fine Thanks"句子(不在任何子元素内).我该怎么做?

<div class="right">
<h2>
<a href="">Hello</a>
</h2>
<br/>
<span>How Are You?</span>
<span>How Are You?</span>
<span>How Are You?</span>
Fine Thanks
</div>
Run Code Online (Sandbox Code Playgroud)

php html5 simple-html-dom

6
推荐指数
1
解决办法
984
查看次数

在注释块之间获取HTML简单的HTM DOM

如何通过识别其"评论"标签来获取DOM块,例如

<!-- start block -->
<p>Hello world etc</p>
<div>something</div>
<!-- end of block -->
Run Code Online (Sandbox Code Playgroud)

我正在使用Simple PHP DOM解析器,但文档不完整,http://simplehtmldom.sourceforge.net/manual.htm.如果我能用纯PHP做到这一点就好了.

html php simple-html-dom

6
推荐指数
1
解决办法
133
查看次数

如何将array_push与关联数组和索引键一起使用?

我有点'生锈与PHP,因为它发生有时我使用它几个星期有时它会发生你几个月没用.无论哪种方式,我试图传递另一个数组的值是"数组",在另一个数组上有序地...我想要做的主要是创建一个键,允许我每行组织增量值,特别是;

数组内容

Array 
(
    [key] => value
    [2] => 1 
    [3] => Inter 
    [4] => 4 
    [5] => 4 
    [6] => 0 
    [7] => 0 
    [8] => 5 
    [9] => 1
    [10] => +4
    [11] => 12
    [12] => Chievo Verona - Inter 0 - 1
    [13] => Inter - Milan 1 - 0
    [14] => Carpi - Inter 1 - 2
    [15] => Inter - Atalanta 1 - 0
    [16] => ;
    [17] => 2
    [18] => Torino
    [19] …
Run Code Online (Sandbox Code Playgroud)

php simple-html-dom

6
推荐指数
1
解决办法
1923
查看次数

我怎么找到这个div?(PHP Simple HTML DOM Parser)

这是我的代码:

<?php
    include('simple_html_dom.php');
    $html = file_get_html('http://www.google.com/search?q=BA236',false);
    $title=$html->find('div#ires', 0)->innertext;
    echo $title;
?>
Run Code Online (Sandbox Code Playgroud)

它会在搜索"BA236"下输出Google搜索页面的所有结果.

问题是我不需要所有这些,我需要的信息是在没有id或类或其他任何内容的div中.

我需要的div是第一个

<div class="g">
Run Code Online (Sandbox Code Playgroud)

在页面上,所以也许我应该尝试这样的事情:

<?php
    include('simple_html_dom.php');
    $html = file_get_html('http://www.google.com/search?q=BA236',false);
    $title=$html->find('div[class=g], 0')->innertext;
    echo $title;
?>
Run Code Online (Sandbox Code Playgroud)

但问题是,如果我加载页面,它除了显示我之外什么都没有:

注意:尝试在第4行的C:\ xampp\htdocs ...\simpletest2.php中获取非对象的属性

那我怎么能得到我正在寻找的div以及我做错了什么?

编辑:

解:

<?php
    include('simple_html_dom.php');
    $html = file_get_html('http://www.google.com/search?q=BA236',false);
    $e = $html->find("div[class=g]");
    echo $e[0]->innertext;
?>
Run Code Online (Sandbox Code Playgroud)

要么:

<?php
    include('simple_html_dom.php');
    $html = file_get_html('http://www.google.com/search?q=BA236',false);
    $title=$html->find('div[class=g]')[0]->innertext;
    echo $title;
?>
Run Code Online (Sandbox Code Playgroud)

html php simple-html-dom

6
推荐指数
1
解决办法
794
查看次数

使用PHP Simple HTML DOM Parser查找带有类的div

我只是从提到的Parser开始,并以某种方式直接在开始时运行问题.

参考本教程:

http://net.tutsplus.com/tutorials/php/html-parsing-and-screen-scraping-with-the-simple-html-dom-library/

我现在想要在一个源代码中找到一个带有类ClearBoth Box的div的内容

我用curl检索代码并创建一个简单的html dom对象:

$cl = curl_exec($curl);  
$html = new simple_html_dom();
$html->load($cl);
Run Code Online (Sandbox Code Playgroud)

然后我想将div的内容添加到一个名为divs的数组中:

$divs = $html->find('div[.ClearBoth Box]');
Run Code Online (Sandbox Code Playgroud)

但是现在,当我print_r $ divs时,它提供了更多,尽管事实上源代码在div中没有​​更多.

像这样:

Array
(
    [0] => simple_html_dom_node Object
        (
            [nodetype] => 1
            [tag] => br
            [attr] => Array
                (
                    [class] => ClearBoth
                )

            [children] => Array
                (
                )

            [nodes] => Array
                (
                )

            [parent] => simple_html_dom_node Object
                (
                    [nodetype] => 1
                    [tag] => div
                    [attr] => Array
                        (
                            [class] => SocialMedia
                        )

                    [children] => Array
                        (
                            [0] => …
Run Code Online (Sandbox Code Playgroud)

php parsing dom simple-html-dom

5
推荐指数
2
解决办法
8万
查看次数

结合CURL和简单的html dom

我一直在使用CURL来抓取网站一段时间以及简单的HTML DOM.我经历过CURL对于抓取网站要好得多.但是我真的很喜欢Simple HTML DOM的简单性.所以我想为什么不把两者结合起来,我试过:

require_once('simple_html_dom.php');

    $url = 'http://news.yahoo.com/';

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $curl_scraped_page = curl_exec($ch);

    $html = new simple_html_dom();
    $html->load($curl_scraped_page);


    foreach($html->find('head') as $d) {
        $d->innertext = "<base href='$url'>" . $d->innertext;
    }

    echo $html->save();
Run Code Online (Sandbox Code Playgroud)

我尽我所能,但它不起作用.我还能尝试什么?

php curl simple-html-dom

5
推荐指数
1
解决办法
7872
查看次数

使用 PHP 进行反向图像抓取

我需要使用 API 不支持的谷歌反向图像搜索来获取一些图像,但幸运的是,您可以使用指向图像的直接链接查询谷歌,它仍然显示结果,因此:

$googleURL = "https://www.google.com/searchbyimage?&image_url=".$imageURL;
echo $googleURL;
Run Code Online (Sandbox Code Playgroud)

输出:

https://www.google.com.au/search?tbs=sbi:AMhZZiu9rNRW4ETWGjN9XYQKsa21UHM7j_1TjMjXvYyNH1knVTyMGZGNmS2yme4CsQb0T7UViTyNrG4e8u_1xLY-dZCU16wkfdUakeY7idDwyMge78nT--Grpll4t9_1fp4YPTsJyKRUANzw1Iyctsko7OZbkYES3VUHtyNy9l9RJf12YOdEvVOxSZCO6-JPxO0PpZ5p79Rr-eDUrqENWYVbk4qojafKMTVfuXvoACQ9iykI-DMVbP9n_1o0YkdKTdUeK2r30wg4Oe2BqspoXlI_11rxySuK6TolPM6z58E6erTT0bnYfXTlyDMBfOwgSfhbn2ipLrNHgNdqyk-YhmMP0_1ZzqVyZrgMz-I5cfH9N65nX6bhZfos0lgr8_15V6ZHtX0_1p8s5r229JDrwzlwnjwOBLgP1inmEORCaKOlcfHbyPnU3n04pIfLGu5fWYpbmFJwtK_1vaJvS0uFb6Pkh_1uv0wvz_10yf4O6E1IvBSoMudcYy4cmJ1zegJJ9L50C0bzXFIRUb62lcPJWbkZNR44Tz378nOSXd-PND0JfKQ-TujT3KfC_1O241knvr9Eb3LbuvncGiCMoPgxlUY4r9B_1KWchNWhJVTJz9omeiygwz5K_13YkjuLg52UF6YWvLedCxgRoUpuj9kFdmYt-b9Tn2VEZG8yfiLm3OTkZnlVYtPF87LLQAHH24VpLMoV0oDllHDK3xOXhvusl_1K2Me9tTdK15PPG7oreeWfYRztQwTpG4iB5GAnaj687OQukvxX5hNFIqXx_1QSuNooDhIP1eJl-6QYfuI4MPasj6flSMom7HYTSjyjcsQKw0Prj1bBsJY6qH1qyLrF1f1_1Ql0COERnbOV7O5mTOuTkNWarmR5wzE06qbgsrtT95ENqafd81ppHbA0Jyg-xQ8TLV-dSp1QDAtiYAHI_11tCwsDtrak4jDS4qAfEJCw_1lb9urJqqajvp25jLH2_1mN3u0eeW7xNF-PljofyhI0iIWYSg6ghyOVRIaT_1c6klKUPvOrquZy8hMCZWHb3CYZNGJeKTnACCyYW1MNVUsYnoFWORN6hvkVlUk0beFXvA_1W2vaoedLjj-fN1y8_1dPOiBROLYtv85nq01csCKk7Eib6p2b_131wEeQBYocoYU0sGTv2_1dhOvSXRPGTnrbZlNDbJFUtH4pF9tMQj5-Fh_1lw9TTXGCjQ9UjOSLD5q7tNjCQU1As1uCQBvmZvxo7J3gZSAcj_19wXfHZCOsA8g-WA97V-2b62ia4RFOehQ38hoXoK7MCSDLnVtJTsKQz9HuEreXm8qGQlbDzfr7JFuHHe2MOyChwnL_1gzRnZd8uv2OIM0nzKh_1wg4T1KCXv3NSGNkSyNxpYXFJ161Sv3NpQQI3epBMiYA_1AcQDiCxOTQvWj00e5EXaXN22CDRWRq3uk4HWj2eXcR6-TGmsYEfSGX9nyQwK1DHp9yaNjk9Bal7rNHUAe_1eMDsCWW9htaLyiMTio0eXyTumVrlt7ShZVd8oSPOj8U0ilY9owH95jz7LsI8vUnzF-FC2m_1yNt3xe4ZAcsRTbYQXTN3Ga76vTQBPu8oz0gkYmDTA&gws_rd=cr&ei=wAHVVJOVLIeeugSZ64A4
Run Code Online (Sandbox Code Playgroud)

..现在在这个页面上,我需要点击链接到实际结果页面,所以我的情况看起来像:

if a.text == 'Large' 
elseif a.text == 'Medium'
elseif a.text == 'Visually similar images'{
    // crawl the link
    // get direct links of top 10 results  
}
Run Code Online (Sandbox Code Playgroud)

但我不确定如何:

  1. 获取href是否满足条件a.text == 'Large',因为Simple HTML DOM ParserPHPQuery两者都没有this像 jQuery。
  2. 在获取结果页面时,如何触发 mousedown 以获取全尺寸图像 URL,因为这是我在源中看到的: jsaction="mousedown:irc.rl;keydown:irc.rlk"

这是我想要做的快速截屏:https ://www.dropbox.com/s/c8g7fs5m5zqcegb/2015-02-07_08-56-23.mp4 ? dl =0 (5.9mb)

php simple-html-dom web-scraping

5
推荐指数
1
解决办法
698
查看次数

如何将simple_html_dom对象转换回字符串?

我已经使用PHP Simple HTML DOM解析器首先通过str_get_html()simple_html_dom.php方法将HTML字符串转换为DOM对象。

$summary = str_get_html($html_string);
Run Code Online (Sandbox Code Playgroud)
  1. 然后我提取的<img>对象从$summary

    foreach ($summary->find('img') as $img) {
        $image = $img;
        break;
    }
    
    Run Code Online (Sandbox Code Playgroud)

    现在,我需要将$ image DOM对象转换回字符串。我使用了这里提到面向对象的方式

    $image_string = $image->save();
    
    Run Code Online (Sandbox Code Playgroud)

    我收到了错误(来自Moodle调试器):

    致命错误:调用未定义的方法simple_html_dom_node :: save()...

  2. 所以我想,因为我正在使用Moodle,所以可能与Moodle有关,所以我只是从同一本手册中进行了简单的(非面向对象的?)方式:

    $image_string = $image;
    
    Run Code Online (Sandbox Code Playgroud)

    然后只是为了检查/确认它已被转换为字符串,我做了:

    echo '$image TYPE: '.gettype($image);
    echo '<br><br>';
    echo '$image_string TYPE: '.gettype($image_string);
    
    Run Code Online (Sandbox Code Playgroud)

    但这打印:

    $image TYPE: object
    
    $image_string TYPE: object
    
    Run Code Online (Sandbox Code Playgroud)

所以问题是为什么?难道我做错了什么?

php dom moodle gettype simple-html-dom

5
推荐指数
1
解决办法
3248
查看次数

简单的HTML DOM - 子选择器(CSS)

我正在尝试div.element使用>组合器选择父母的(直接)孩子,但它失败了.

HTML:

<div class="element">
    <p>test</p>
</div>

<div class="element">
    <div class="selected">
        <p>test2</p>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

PHP:

$html->find('div.element > p', 0);
Run Code Online (Sandbox Code Playgroud)

我期待选择直接p元素.

如果它是嵌套的后代 - 它不应返回任何内容,但它会返回test2.

我该如何写回来test,但不是test2吗?谢谢

更新:关于SO的一般共识似乎是简单的HTML DOM是坏的.我最后DOMDocument根据Phil 的建议使用PHP编写代码.我测试了Nevermind的解决方案,它确实也有效.感谢所有帮助和Happy Coding

css php simple-html-dom

5
推荐指数
1
解决办法
951
查看次数

使用 Simple HTML Dom 获取所有 HTML 列表元素

目前我正在从事一个项目,该项目要求我解析来自替代网站的一些数据,但我遇到了一些问题(请注意,我对PHP编码非常陌生。)

这是我在下面使用的代码 + 它返回的内容。

$dl = $html2->find('ol.tracklist',0);
print $dl = $dl->outertext;
Run Code Online (Sandbox Code Playgroud)

上面的代码返回我们想要获取的数据,它在下面但非常混乱,如果你想看点击这里

但是,当我把它放在 foreach 中时,它一次只返回一个a href属性。

foreach($html2->find('ol.tracklist') as $li) 
{
    $title = $li->find('a',0);
    print $title;
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能返回a href上面示例代码中的所有元素?

注意:我为此使用 simple_html_dom.php。

html php simple-html-dom

5
推荐指数
1
解决办法
1553
查看次数

标签 统计

php ×10

simple-html-dom ×10

html ×3

dom ×2

css ×1

curl ×1

gettype ×1

html5 ×1

moodle ×1

parsing ×1

web-scraping ×1