Nasıl HTML formu alabilirim - Vikipedi bilgi alma?

4 Cevap php

Ben wikipedia bilgi almak için curl kullanıyorum. Şimdiye kadar temel bir metin bilgisi alınırken başarılı oldum ama ben gerçekten HTML onu almak isterim.

İşte benim kod:

$s = curl_init();   	

$url = 'http://boss.yahooapis.com/ysearch/web/v1/site:en.wikipedia.org+'.$article_name.'?appid=myID';
curl_setopt($s,CURLOPT_URL, $url);
curl_setopt($s,CURLOPT_HEADER,false);
curl_setopt($s,CURLOPT_RETURNTRANSFER,1);

$rs = curl_exec($s);

$rs = Zend_Json::decode($rs);

$rs = ($rs['ysearchresponse']['resultset_web']);

$rs = array_shift($rs);
$article= str_replace('http://en.wikipedia.org/wiki/', '', $rs['url']);

$url = 'http://en.wikipedia.org/w/api.php?';
$url.='format=json';
$url.=sprintf('&action=query&titles=%s&rvprop=content&prop=revisions&redirects=1', $article);

curl_setopt($s,CURLOPT_URL, $url);
curl_setopt($s,CURLOPT_HEADER,false);
curl_setopt($s,CURLOPT_RETURNTRANSFER,1);

$rs = curl_exec($s);
//curl_close( $s );
$rs = Zend_Json::decode($rs);

$rs = array_pop(array_pop(array_pop($rs)));
$rs = array_shift($rs['revisions']);
$articleText = $rs['*'];

(Onun tüm biçiminde bu tür: Metin alınan Ancak bu şekilde görüntülenmesine de yeterli değildir

'''Aix-les-Bains''' is a [[Communes of France|commune]] in the [[Savoie]] [[Departments of France|department]] in the [[Rhône-Alpes]] [[regions of France|region]] in southeastern [[France]].

It lies near the [[Lac du Bourget]], {{convert|9|km|mi|abbr=on}} by rail north of [[Chambéry]].

==History== ''Aix'' derives from [[Latin]] ''Aquae'' (literally, "waters"; ''cf'' [[Aix-la-Chapelle]] (Aachen) or [[Aix-en-Provence]]), and Aix was a bath during the [[Roman Empire]], even before it was renamed ''Aquae Gratianae'' to commemorate the [[Emperor Gratian]], who was assassinated not far away, in [[Lyon]], in [[383]]. Numerous Roman remains survive. [[Image:IMG 0109 Lake Promenade.jpg|thumb|left|Lac du Bourget Promenade]]

Nasıl wikipedia makalenin HTML alabilirim?


UPDATE: Teşekkürler ama burada bu tür yeni ve şu anda ben [ilk kez de olsa] bir XPath sorgusu çalıştırmak için çalışıyorum ve herhangi bir sonuç almak için görünmüyor olabilir. Ben aslında burada bir kaç şey bilmek gerekir.

  1. Nasıl bir yazının sadece bir kısmını talep ederim?
  2. Nasıl istenen makalenin HTML olsun.

Bu parametre olarak alınan wikipedia metin ile wikipedia API için ikinci bir istek yapmak için bir fikir koymak ve bu html almak istiyorum - - bu görünüyordu değil ancak ben url wikipedia veri madenciliği bu geçti kadar çalışır:. (- Ben Temelde ne benim uygulaması pin harita üzerinde işaret bazı yerleri ve şehirler olması sadece html bir karmaşa olarak bütün makale kapmak ve dökümü istemiyorum - Eğer tıklayın şehir işaretleyici ve bitişik bir div gösterilecek kentin ajax detayları yoluyla talep ediyorum. dinamik wikipedia dan almak isteyen bu bilgiler. daha sonra belirli bir şehir için mevcut olmayan makaleler ile ilgili hakkında endişelenmenize edeceğiz Sadece onun bu noktada çalışma emin olmak gerekir.

Herkes, yani okuma ve wikipedia makalenin seçilmiş bölümleri ayrıştırmak için ben aradığım yok güzel çalışma örneği biliyor mu.


Sağlanan url göre, - o çözümlü html dönmek için ben wikipedia API konuma Vikimetin göndermek gerektiğini söylüyor. Ancak ben hiçbir sorun ile ayrıştırır GET olarak Vikimetin dahil çalışırsanız - sorun ben bilgiyi sonrası eğer yerine ben erişim engellendi ediyorum bir hata hiçbir tepki almak ve olmasıdır. Ben ayrıştırmak için çooook çok fazla metin olduğunda ama tabii ki başarısız olur.

Bu wikipedia API ile ilgili bir sorun var mı? Ben hiç şans şimdi iki gün boyunca ona hack oldum çünkü: (

4 Cevap

Basit çözüm muhtemelen sayfasını kendisi kapmak olacaktır (örneğin, http://en.wikipedia.org/wiki/Combination) ve sonra potansiyel bir XPath sorgusu ile, <div id="content"> içeriğini ayıklayın.

Ben kullandım ve çok iyi iş yapan bir ARMUT Wiki Filtresi vardır.

Text Wiki

Phil

printable version Söz istenen Wikipedia makalesinin bakarak deneyin.

Diğer bir deyişle, kaynak kod satırı değiştirin:

$url.=sprintf('&action=query&titles=%s&rvprop=content&prop=revisions&redirects=1', $article);

bir şey gibi:

$url.=sprintf('&action=query&titles=%s&printable=yes&redirects=1', $article);

Yasal Uyarı: test edilmedi var, ve bu API işe yarayabilecek nasıl sadece bir tahmin.

Sayfa istendiğinde Bildiğim kadarıyla anladığım kadarıyla, Wikipedia yazılım HTML içine Wiki biçimlendirme dönüştürür. Yani geçerli bir yöntemi kullanarak, sonuçları ile uğraşmak gerekir.

Başlamak için iyi bir yer Mediawiki API olduğunu. Ayrıca http://pear.php.net/package/Text_Wiki cURL yoluyla alınan sonuçlarını biçimlendirmek için kullanabilirsiniz.