1

サイトからデータを取得していwww.example.comます。データはテーブルのような構造になっており、そのためのページネーションもあります。最初のページのデータを適切に取得し、次のページのデータを取得するためにコードを実行していforloopます。 3.私のコードは次のとおりです:-

$url = "http://www.example.com/browseall";

$ch = curl_init();

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_URL,$url);

$output = curl_exec($ch);

$html = new simple_html_dom();
$html->load_file($url);
foreach($html->find('div.full_listing_pager') as $pages)
{
    $page = $pages->children(2)->plaintext;
}
curl_close($ch);
$limit = $page+1;

echo "limit--->".$limit;


echo "<table border=1>";
echo "<tr>";
echo "<th>Listing Id </th>";
echo "<th>Free Km Allowed</th>";
echo "<th>Free Days allowed</th>";
echo "<th>Driver requirements</th>";
echo "<th>Owner comments</th>";
echo "</tr>";


for($i=1;$i<$limit+1;$i++) //$limit =3(no of pages)
{
    $url=urlencode('http://www.example.com.au/browseall?browse_filter[from_city]=0&browse_filter[to_city]=0&browse_filter[car]=0&browse_filter[by_date]=0&page='.$i);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, $url);

    $output = curl_exec($ch);

    foreach($html->find('table.full_listings_table tbody tr.more_info_second') as $div)
    {
        $str = "<tr>";

        $data = $div->find('td p b',0)->plaintext;
        $str .="<td>".$data."</td>";

        $data = $div->find('td div b',0)->plaintext;
        $str .="<td>".$data."</td>";

        $data = $div->find('td br b',0)->plaintext;
        $str .="<td>".$data."</td>";

        $data = $div->find('td div',0)->plaintext;
        $dataLen = strlen($data);
        $temp = "Driver requirements:";
        $tempLen = strlen($temp);
        $pos = strpos($data,$temp,0);

        $sum = $pos + $tempLen;
        $finalData = substr($data,$sum,$dataLen-$sum);

        $str .="<td>".$finalData."</td>"; 

        $data = $div->find('td div',2)->plaintext;
        $data = str_replace("Owner comments:"," ",$data);
        $str .="<td>".$data."</td>"; 

        echo $str."</tr>";
    }
}
echo "</table>";
curl_close($ch);

問題は、最初のページのデータを 3 回取得することです。テーブルに 3 つのページのデータすべてが必要です。コードに何か問題がありますか?これについて私を助けてくださいcURL

4

1 に答える 1

1

神はついに解決策を得ました...本当に私は私が書いたそのようなばかです

$url=urlencode('http://www.example.com.au/browseall?browse_filter[from_city]=0&browse_filter[to_city]=0&browse_filter[car]=0&browse_filter[by_date]=0&page='.$i);

urlencode を使用する必要はありません。この次のコードを記述することで、解決策が得られました:-

$url='http://www.example.com.au/browseall?browse_filter[from_city]=0&browse_filter[to_city]=0&browse_filter[car]=0&browse_filter[by_date]=0&page='.$i;
于 2012-08-02T07:20:43.340 に答える