抱歉英语不好。 所以我想从网站上删除一些内容,但div类是嵌套的,让我感到困惑。
基本上结构是:
<div id="gsc_vcd_table">
<div class="gs_scl">
<div class="gsc_vcd_field">
Pengarang
</div>
<div class="gsc_vcd_value">
I Anggara Wijaya, Djoko Budiyanto Setyohadi
</div>
</div>
<div class="gs_scl">
<div class="gsc_vcd_field">
Tanggal Terbit
</div>
<div class="gsc_vcd_value">
2017/3/1
</div>
</div>
</div>
我想从 Pengarang 字段获取文字 I Anggara Wijaya,Djoko Budiyanto Setyohadi ,并从 2017/3/1 > Tanggal Terbit 字段。
$crawlerdetail=$client->request('GET',$detail);
$detailscholar=$crawlerdetail->filter('div.gsc_vcd_table');
foreach ($detailscholar as $key)
{
$keyCrawler=new Crawler($key);
$pengarang=($scCrawler->filter('div.gsc_vcd_value')->count()) ? $scCrawler->filter('div.gsc_vcd_value')->text() : '';
echo $pengarang;
}
请帮帮我。
答案 0 :(得分:0)
如果您想使用SimpleXMLElement课程。
请参阅此代码:
<?php
$string = <<<XML
<div id="gsc_vcd_table">
<div class="gs_scl">
<div class="gsc_vcd_field">
Pengarang
</div>
<div class="gsc_vcd_value">
I Anggara Wijaya, Djoko Budiyanto Setyohadi
</div>
</div>
<div class="gs_scl">
<div class="gsc_vcd_field">
Tanggal Terbit
</div>
<div class="gsc_vcd_value">
2017/3/1
</div>
</div>
</div>
XML;
$xml = new SimpleXMLElement($string);
$result1 = $xml->xpath("//div[contains(@class, 'gsc_vcd_field')]");
$result2 = $xml->xpath("//div[contains(@class, 'gsc_vcd_value')]");
foreach ($result1 as $key => $node) {
echo "FIELD: $result1[$key] , VALUE: $result2[$key]<br>\n";
}
并且对于获取任何元素的xpath模式,您可以在chrome中使用inspect,并复制XPath。
另一个解决方案是使用preg_match_all
,请参阅:
preg_match_all('/<div class="gsc_vcd_field">\r\n(.*?)\r\n.*<\/div>\r\n.*<div class="gsc_vcd_value">\r\n(.*?)\r\n.*<\/div>/', $string, $matches);
foreach ($matches[1] as $key => $match) {
echo "FIELD: " . $matches[1][$key] . " , VALUE: " . $matches[2][$key] . "<br>\n";
}