Php 使用简单的HTMLDOM从网站中获取数据视图值

Php 使用简单的HTMLDOM从网站中获取数据视图值,php,web-scraping,simple-html-dom,Php,Web Scraping,Simple Html Dom,我在配置/修改PHP方面还行,但还不够熟练,无法从头开始编写-想知道是否有人能帮我解决这个问题 基本上,我希望从网站上搜集少量数据,格式如下: <div class="PDPVariantOption" data-value="XYZ" data-variant="ClothingSize"> 这是我正在使用的代码(与之配合使用),但这提取了div标记中的所有内容-我尝试了使用getAttribute和类似的各种选项来获取“数据值”值(恐怕纯粹是我的猜测!),但运气不好-有人能帮我

我在配置/修改PHP方面还行,但还不够熟练,无法从头开始编写-想知道是否有人能帮我解决这个问题

基本上,我希望从网站上搜集少量数据,格式如下:

<div class="PDPVariantOption" data-value="XYZ" data-variant="ClothingSize">
这是我正在使用的代码(与之配合使用),但这提取了div标记中的所有内容-我尝试了使用getAttribute和类似的各种选项来获取“数据值”值(恐怕纯粹是我的猜测!),但运气不好-有人能帮我吗

非常感谢


乔伊

好的,这是我的完整代码,可以使用:

$dom = new DOMDocument();
$html = '<div class="PDPVariantOption" data-value="XYZ" data-variant="ClothingSize">
<div class="PDPVariantOption" data-value="BHB" data-variant="ClothingSize">
<div class="differentName">
<div class="PDPVariantOption" data-value="567" data-variant="ClothingSize">
<div class="PDPVariantOption" data-value="123" data-variant="ClothingSize">
<div class="PDPVariantOption" data-value="rty" data-variant="ClothingSize">';

$dom->loadHTML($html);

$finder = new DomXPath($dom);
$result = $finder->query("//*[contains(@class, 'PDPVariantOption')]");

for ($i; $i < $result->length; $i++) {
    $row = $result->item($i)->getAttribute('data-value');
    echo $row . "\n";
}
$dom=newdomdocument();
$html='1
';
$dom->loadHTML($html);
$finder=newdomxpath($dom);
$result=$finder->query(“/*[contains(@class,'PDPVariantOption')]”);
对于($i;$i<$result->length;$i++){
$row=$result->item($i)->getAttribute('data-value');
回显$row。“\n”;
}

好,这是我的完整代码,可以工作:

$dom = new DOMDocument();
$html = '<div class="PDPVariantOption" data-value="XYZ" data-variant="ClothingSize">
<div class="PDPVariantOption" data-value="BHB" data-variant="ClothingSize">
<div class="differentName">
<div class="PDPVariantOption" data-value="567" data-variant="ClothingSize">
<div class="PDPVariantOption" data-value="123" data-variant="ClothingSize">
<div class="PDPVariantOption" data-value="rty" data-variant="ClothingSize">';

$dom->loadHTML($html);

$finder = new DomXPath($dom);
$result = $finder->query("//*[contains(@class, 'PDPVariantOption')]");

for ($i; $i < $result->length; $i++) {
    $row = $result->item($i)->getAttribute('data-value');
    echo $row . "\n";
}
$dom=newdomdocument();
$html='1
';
$dom->loadHTML($html);
$finder=newdomxpath($dom);
$result=$finder->query(“/*[contains(@class,'PDPVariantOption')]”);
对于($i;$i<$result->length;$i++){
$row=$result->item($i)->getAttribute('data-value');
回显$row。“\n”;
}

感谢您的回复-我真的很抱歉,但我无法实现这一点-我的代码现在是:$html->load($result[“body”])$rows=$html->find('div[data-value]')->{'data-value'};foreach($row作为$row){echo“\t”。$row.\n”}但它不会输出任何内容吗?提前谢谢,请检查我编辑的答案。这是我的演示脚本,它使用更简单的getAttribute为我工作。非常感谢Ben,我真的很感激它-我已经让它工作了-很抱歉这么痛苦,但是是否有必要将它限制为类PDPVariantOption的div-因为页面上还有其他div返回了空行(大概是因为它们是没有数据值的div)啊,是的,好吧,我的错。我现在已经修复了我的答案,只获取具有设置类名的div,我完全忘记了。谢谢你,本-昨天花了一整天的时间试图修复这个问题,真的很感谢你的帮助:)祝你有一个美好的一天!感谢您的回复-我真的很抱歉,但我无法让它工作-我的代码现在是:$html->load($result[“body”])$rows=$html->find('div[data-value]')->{'data-value'};foreach($row作为$row){echo“\t”。$row.\n”}但它不会输出任何内容吗?提前谢谢,请检查我编辑的答案。这是我的演示脚本,它使用更简单的getAttribute为我工作。非常感谢Ben,我真的很感激它-我已经让它工作了-很抱歉这么痛苦,但是是否有必要将它限制为类PDPVariantOption的div-因为页面上还有其他div返回了空行(大概是因为它们是没有数据值的div)啊,是的,好吧,我的错。我现在已经修复了我的答案,只获取具有设置类名的div,我完全忘记了。谢谢你,本-昨天花了一整天的时间试图修复这个问题,真的很感谢你的帮助:)祝你有一个美好的一天!