0

Web サイトからデータを収集する必要があります。データは div としてラップされています。各 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 DOMDOcument コード:

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

Xpath 文字列関数Docsを使用してXpath 1.0で表現できます。

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

読み取り: string を含む属性をdiv持つすべての要素。Xpath のルールにより、これらすべてのタイトルの子を選択するなど、式をさらに拡張できます。idpost-

//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 に答える