0

PHP Curl と Xpath を使用して 2 つの要素を抽出しようとしています!

これまでのところ要素は分離されforeachていますが、同時にそれらを持ちたいと思います:

@$dom->loadHTML($html);
$xpath = new DOMXpath($dom);
$elements = $xpath->evaluate("//p[@class='row']/a/@href");
//$elements = $xpath->query("//p[@class='row']/a");

foreach ($elements as $element) {
    $url = $element->nodeValue;
    //$title = $element->nodeValue;    
}

私がechoそれぞれから 1 つのforeach要素を取得すると、要素が 1 つだけ取得され、内部でエコーされるとforeachすべての要素が取得されます。

私の質問は、両方を同時に取得する方法 (url と title ) と、pdo を使用してそれらを myqsl に追加する最良の方法は何かということです。

ありがとうございました

4

2 に答える 2

1

この場合、XPath を 2 回使用する必要はありません。1 つのクエリを実行して、関連する他のノードに移動できます。

たとえば、href関心のあるすべての を検索し、それらownerElementの の ( <a>) ノード値を取得します。

$hrefs = $xpath->query("//p[@class='row']/a/@href");
foreach ($hrefs as $href) {
    $url = $href->value;
    $title = $href->ownerElement->nodeValue;
    // Insert into db here
}

<a>または、関心のあるすべての を見つけて、それらのhref属性を取得します。

$anchors = $xpath->query("//p[@class='row']/a[@href]");
foreach ($anchors as $anchor) {
    $url = $anchor->getAttribute("href");
    $title = $anchor->nodeValue;
    // Insert into db here
}
于 2013-03-11T20:58:51.190 に答える
0

$url反復ごとに上書きしています。多分配列を使用しますか?

@$dom->loadHTML($html);
$xpath = new DOMXpath($dom);
$elements = $xpath->evaluate("//p[@class='row']/a/@href");
//$elements = $xpath->query("//p[@class='row']/a");

$urls = array();

foreach ($elements as $element){
    array_push($urls, $element->nodeValue);
    //$title = $element->nodeValue;

}
于 2013-03-11T20:45:00.077 に答える