Php 如何使用DOM刮表并插入mysql
我在sosmpedpedia.com/harga.php中有一个表,我想在Php 如何使用DOM刮表并插入mysql,php,mysql,dom,scrape,Php,Mysql,Dom,Scrape,我在sosmpedpedia.com/harga.php中有一个表,我想在loadHTML($htmlContent)中获得标题表1和细节表1; $Header=$DOM->getElementsByTagName('th'); $Detail=$DOM->getElementsByTagName('td'); //#获取表的标题名称 foreach($Header作为$NodeHeader) { $adatableheaderhtml[]=trim($NodeHeader->textConte
loadHTML($htmlContent)中获得标题表1和细节表1;
$Header=$DOM->getElementsByTagName('th');
$Detail=$DOM->getElementsByTagName('td');
//#获取表的标题名称
foreach($Header作为$NodeHeader)
{
$adatableheaderhtml[]=trim($NodeHeader->textContent);
}
//打印(AdatableHeaderHTML);模具();
//#获取没有标题名称作为键的行数据/明细表
$i=0;
$j=0;
foreach($sNodeDetail)
{
$adatabledetailhtml[$j][]=trim($sNodeDetail->textContent);
$i=$i+1;
$j=$i%计数($AdatableHeaderHTML)==0?$j+1:$j;
}
//打印(AdatableDetailHTML);模具();
//#获取行数据/详细信息表,标题名称为键,外部数组索引为行号
对于($i=0;$i
我的问题是,我得到了另一个表,我只需要
中的表“Harga Sosmed”,我建议使用DOMXPath
显式地针对您想要的元素:而不是使用unset
,创建一个建立作用域的函数。我建议使用DOMXPath
来明确地针对您想要的元素。p:与其使用unset
,不如创建一个建立作用域的函数。
$htmlContent = file_get_contents("http://sosmedpedia.com/harga.php");
$DOM = new DOMDocument();
$DOM->loadHTML($htmlContent);
$Header = $DOM->getElementsByTagName('th');
$Detail = $DOM->getElementsByTagName('td');
//#Get header name of the table
foreach($Header as $NodeHeader)
{
$aDataTableHeaderHTML[] = trim($NodeHeader->textContent);
}
//print_r($aDataTableHeaderHTML); die();
//#Get row data/detail table without header name as key
$i = 0;
$j = 0;
foreach($Detail as $sNodeDetail)
{
$aDataTableDetailHTML[$j][] = trim($sNodeDetail->textContent);
$i = $i + 1;
$j = $i % count($aDataTableHeaderHTML) == 0 ? $j + 1 : $j;
}
//print_r($aDataTableDetailHTML); die();
//#Get row data/detail table with header name as key and outer array index as row number
for($i = 0; $i < count($aDataTableDetailHTML); $i++)
{
for($j = 0; $j < count($aDataTableHeaderHTML); $j++)
{
$aTempData[$i][$aDataTableHeaderHTML[$j]] = $aDataTableDetailHTML[$i][$j];
}
}
$aDataTableDetailHTML = $aTempData; unset($aTempData);
print_r($aDataTableDetailHTML); die();