0

我必须从网站收集一些数据。我的数据被包装为 div s。每个 div 内部都有一个标题标签。我需要获取这些标题标签内的文本。如何做到这一点。我已经编写了以下代码。我必须申请什么修改才能完成任务

<?php
$str = '';
$page =  file_get_contents('http://www.sarkari-naukri.in/');
$dom = new DOMDocument();
$dom->loadHTML($page);
$divs = $dom->getElementsByTagName('div');
$i = 0;
$len = $divs->length;
while($i<$len) {
    $div = $divs->item($i++);
    $id = $div->getAttribute('id');
    if(strpos($id,'post-') !== false ) {
           // i need to get text inside title tag inside this div
        $title ='';//title should be stored here
        $str = $str.$title;
    }
}
echo $str;

示例 HTML

<body>
    <div id = 'post-1'>
         <title>title 1</title>
    </div>
    <div id = 'post-2'>
         <title>title 2</title>
    </div>
    <div id = 'post-3'>
         <title>title 3</title>
    </div>
</body>
4

2 回答 2

2

以下 PHP DOMDO 文档代码:

$id = $div->getAttribute('id');
if (strpos($id,'post-') !== false) {

可以用Xpath字符串函数Docs在Xpath 1.0中表示:

//div[contains(@id, 'post-')]

阅读:任何div具有id包含字符串的属性的元素post-。通过 Xpath 的规则,您可以进一步扩展表达式,例如选择所有这些的标题子项:

//div[contains(@id, 'post-')]/title
于 2013-02-09T10:22:21.923 回答
1

您可以使用 xpath 查询来检索标题信息:

$xml = "<body>
    <div id = 'post-1'>
         <title>title 1</title>
    </div>
    <div id = 'post-2'>
         <title>title 2</title>
    </div>
    <div id = 'post-3'>
         <title>title 3</title>
    </div>
</body>";

$str = '';

$doc = new DOMDocument;
$doc->loadHTML($xml);

$xpath = new DOMXPath($doc);

$entries = $xpath->query('//body/div/title');
foreach ($entries as $entry) {
    $str .= $entry->nodeValue;
}

var_dump($str);

现场演示

于 2013-02-09T10:04:18.990 回答