0

初めて PHP で Curl を試しています。その理由は、このページから結果をスクレイピングしたいからです: http://www.lldj.com/pastresult.php。このサイトは、2002 年から毎週の宝くじの結果を掲載しており、簡単な送信フォーム ( Date ) があります。

送信ボタン : 名前 = ボタン / 値 = 送信 選択ドロップダウン : 名前 = 抽選 & オプション #( 1 - 1097 ) // 抽選番号を表す

手動で調べることはできますが、PHP/CURL を使用してデータを送信し、結果を取得する方法をテストすることにも興味があるので、単純なスクリプトを使用して簡単にしないでください。

スクレイピングに DOM PHP を使用しており、構文の使用に慣れています。Curl と DOM を一緒に使用する必要があるのか​​、それとも CURL で実現できるのか疑問に思っています。

私がこれまでに持っているもの;

include'dom.php';
$post_data['draw'] = '1097';
$post_data['button'] = 'Submit';

//traverse array and prepare data for posting (key1=value1)
foreach ( $post_data as $key => $value) {
$post_items[] = $key . '=' . $value;
}

//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);

//create cURL connection
$curl_connection = 
curl_init('http://www.lldj.com/pastresult.php');

//set options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT, 
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
//set data to be posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);

 //perform our request
$result = curl_exec($curl_connection);

 //show information regarding the request
 print_r(curl_getinfo($curl_connection));
echo curl_errno($curl_connection) . '-' . 
            curl_error($curl_connection);

データ提出後・スクレイピング

$t = $curl_connection->find('table',0); // ?? usualy referes to file_get_content Var
$data = $t->find('tr');

foreach($data as $n) {
$tds = $n->find('td');

$dataRows = array();

$dataRows['num'] =  $tds[0]->find('img',0)->href;

var_dump($dataRows);
}

誰かがこれが正しいかどうかを指摘できますか? 送信値を自動的に増やしてからプロセスを繰り返すように設定するにはどうすればよいですか (たとえば、daw = 1 を送信してから =2 を描画するなど)。

4

2 に答える 2

0

ページを読み込む

リモート コンテンツを取得するための推奨される方法は、file_get_contents(). 使用する:

$html = file_get_contents('http://www.lldj.com/pastresult.php');

それだけです。


ページからコンテンツを取得する

通常使用するページからコンテンツを取得するには、次のようにDOMDocumentDOMXPathます。

$doc = new DOMDocument();
@$doc->loadHTML($html);
$selector = new DOMXpath($doc);

// xpath query
$result = $selector->query('YOUR QUERY');
于 2013-06-04T09:25:03.873 に答える