大家好,
我正在努力争取结果并取得了成功,但我现在陷入困境。
下面的代码显示有一个类为“vsc”的 DIV,其中是一个类为“r”的 H3。我可以使用 (//h3[@class='r'//a) 获取 H3 标签内的锚点。
我的问题是下面的表格也有一个带有“r”类的 H3,我不想要表格内的任何链接。
<li class="g">
<div class="vsc" pved="0CD4QkgowAA" bved="0CD8QkQo" sig="m15">
<h3 class="r">
<a href="https://ameriloan.com/" class="l" onmousedown="return rwt(this,'','','','1','AFQjCNEazKuyTuAyYgnAT3MqI3aJoiAlZw','','0CDwQFjAA',null,event)">
</h3>
<div class="vspib" aria-label="Result details" role="button" tabindex="0">
<div class="s">
</div>
<table cellpadding="0" cellspacing="0" class="nrgt">
这是我用来抓取所有锚点的脚本,但它无法仅检索“vsc”DIV 中的 H3 锚点:
function getURL($url)
{
$ch=curl_init();
// This allows the script to accept HTTPS certificates "blindly"
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_HTTP_VERSION,'CURL_HTTP_VERSION_1_1' );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Follows redirects
curl_setopt($ch, CURLOPT_MAXREDIRS, 6); // follows up to 6 redirects
$ret = curl_exec($ch);
return $ret;
}
$i = 0;
$rawKeyword = 'EXAMPLE';
$keyword = str_replace(' ', '+', $rawKeyword);
$url = "http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=".$keyword;
//get the HTML through cURL function
$html = getURL($url);
// parse the html into a DOMDocument
$dom = new DOMDocument();
@$dom->loadHTML($html);
// grab all data
$xpath = new DOMXPath($dom);
// XPath eval to get page links and titles
//$elementContent = $xpath->evaluate("//h3[@class='r']//a");
$elementContent = $xpath->evaluate("//div[@class='vsc']//h3[@class='r']//a");
// Print results
foreach ($elementContent as $content) {
$i++;
$clean = trim($content->getAttribute('href'), "/url?q=");
echo '<strong>'.$i.'</strong>: <h3 style=" clear:none !important; font-size:10px; letter-spacing:0.1em; line-height:2.6em; text-transform:uppercase;">'.$content->textContent.'</h3><br/>'.$clean.'<br /><br />';
}
我的评估查询做错了什么?
@jdwilemo - 你的方式是正确的,我试图只在 DIV 中使用“vsc”类来获取锚点。这是更多的表格代码,它显示了另一个具有“r”类的 H3 DIV ......
<table cellpadding="0" cellspacing="0" class="nrgt">
<tbody>
<tr class="mslg">
<td style="vertical-align: top; ">
<div class="sld vsc" pved="0CIYBEJIKMAE" bved="0CIcBEJEK" sig="Q_U">
<span class="tl">
<h3 class="r">
<a href="https://example.com/?page=ent_cs_login" class="l" onmousedown="return rwt(this,'','','','2','AFQjCNEyANjoolNXGFnLVKH3S1j4CO1qQw','','0CIQBEIwQMAE',null,event)">
</h3>
</span>
<div class="vspib" aria-label="Result details" role="button" tabindex="0">
<div class="s">
</div>
</li>
一切都包裹在一个'li'标签中。该表是“li”标签中的最后一个元素。我想获得 <H3 class='r'> 锚点,而不是在 'li' 元素末尾的表格内获得 <H3 class='r'> 锚点。我希望我清除了...