ウィキペディアからデータを取得するスクリプトに取り組んでいます。
よくある問題は、たとえばフェッチしたいことです。
ノース ストラドブローク島
しかし、取得している文字列は以下にあるため、がらくたを削除する必要があります
[[North Stradbroke Island]]'
現在のスクレイプ コードは次のとおりです。
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,"http://en.wikipedia.org/wiki/Special:Export/" . $wiki['suburb'] . ",_" . $wiki['state'] . "");
curl_setopt($curl_handle,CURLOPT_TIMEOUT,10);
curl_setopt($curl_handle,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
$xml = curl_exec($curl_handle);
curl_close($curl_handle);
$x = simplexml_load_string($xml);
$text = $x->page->revision->text;
$arr = explode("| ", $text);
$wikipedia = array();
foreach($arr as $s){
$pair = preg_split('/= /', $s);
$key = substr($pair[0],0,strpos($pair[0]," "));
switch($key){
case "lga":
case "pop":
case "dist1":
$wikipedia[$key] = substr($pair[1],0,-1);
break;
case "near-nw":
case "near-n":
case "near-ne":
case "near-w":
case "near-e":
case "near-sw":
case "near-s":
case "near-se":
$value = $pair[1];
if($value != ""){
$value =substr($pair[1],2,strpos($pair[1],",")-2);
}
$wikipedia[$key] = $value;
break;
}
}
私のページには次のものがあります:
<?
$wiki['suburb'] = str_replace(" ", "_", $r['suburb']);
$wiki['state'] = convertStateWiki($r['state']);
include("/path-to-wiki-file/wiki.suburb.php");
if ($wikipedia != NULL){
?>
結果をエコーする: ( example )
<a href="reviews/<?=strtolower($r['state']);?>/<?=strtolower(str_replace(" ", "-", $wikipedia['near-nw']));?>/"><?=$wikipedia['near-nw'];?></a>
つまり、基本的には、Wiki のエクスポート フィードを使用して郊外を取得します。その郊外は、次のようにウィキペディアに入力されている可能性があります。
[['郊外の名前]'] たとえば
上記を次のように返す必要があります: Some Suburb Name
ALPHA 以外のすべての文字を削除する必要があります。php で 100% ではありません。ただし、できるだけ多くのコードを提供したので、反対票を投じないでください。
返されたデータにアルファ文字以外が含まれないようにする必要があるだけです(スペースを許可する必要があります)