我是新来的,需要帮助来修复我的代码。
我正在尝试使用DomXPath
制作代码,从bing搜索中获取标题,网址和说明,然后将其保存到我的数据库中。
以下是代码:
<?php
$s="something-words";
$keywords = strstr($s, '-') ? str_replace('-', '+', $s) : $s;
$html5 = new DOMDocument();
@$html5->loadHtmlFile('http://www.bing.com/search?q='.$keywords.'&go=&qs=bs&filt=all');
$xpath5 = new DOMXPath($html5);
$nodes = $xpath5->query('//div[@class="sb_tlst"]/h3');
$nodes = $xpath5->query('//div[@class="sb_meta"]/cite');
$nodes = $xpath5->query('//div[@id="results"]/ul[@id="wg0"]/li/div/div/p');
$data = array();
$data2 = array();
$data3 = array();
$i = 0;
foreach ($nodes as $node) {
$data = $node->textContent;
$i++;
// insert table urlgrab
mysql_query( "INSERT INTO urlgrab(title) Values ('$data')");
$data2 = $node->textContent;
$i++;
// update table urlgrab
dbConnect();
mysql_query( "UPDATE urlgrab SET url='$data2' WHERE title='$data'" );
$data3 = $node->textContent;
$i++;
// update table urlgrab
dbConnect();
mysql_query( "UPDATE urlgrab SET description='$data3' WHERE title='$data'" );
}
?>
问题是我在数据库中获得了与标题,网址,描述相同的结果。如何修复此代码以将所有数据标题,网址和描述保存到我的数据库?
答案 0 :(得分:0)
因为你搞砸了你的代码所以很难识别。但是假设我已经生成了下面适合你的代码。
$titles = $xpath5->query('//div[@class="sb_tlst"]/h3');
$urls = $xpath5->query('//div[@class="sb_meta"]/cite');
$descriptions = $xpath5->query('//div[@id="results"]/ul[@id="wg0"]/li/div/div/p');
$arrTitle = array();
foreach($titles as $title){
$arrTitle[] = $title->textContent;
}
$arrUrl = array();
foreach($urls as $url){
$arrUrl[] = $url->textContent;
}
$arrDescription = array();
foreach($descriptions as $description){
$arrDescription[] = $description->textContent;
}
$i = 0;
dbConnect();
foreach ($i=0; $i < count($arrTitle); $i++) {
$title = $arrTitle[$i];
$url = $arrUrl[$i];
$description = $arrDescription[$i];
mysql_query( "INSERT INTO urlgrab(`title`, `url`, `description`) Values ('$title', '$url', '$description')");
}
* 在循环中删除$i++;
然后运行。实际上我们在$i++
循环* 中正在进行for
这将解决您的问题。