3

こんにちは、テキストを分析し、python を使用して人の人生の出来事のタイムラインを作成できる、シンプルなウィキペディアのスクラップ ツールを作成しようとしています。私はそれを行うための可能な方法をネットで検索しており、今まで BeautifulSoup と urllib2 を使用してデータを取得することができました。これまでのコードは次のようになります。

from bs4 import  BeautifulSoup
import urllib2
import re
import nltk
import json


#get source code of page (function used later)
def fetchsource(url):
    source = urllib2.urlopen(url).read()
    return source

if __name__=='__main__':
    #url = "http://en.wikipedia.org/w/index.php?action=raw&title=Tom_Cruise" #works
    url="http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&&titles=Tom_Cruise" #works
    print url
    source = fetchsource(url)
    soup = BeautifulSoup(source)
    print soup.prettify()

これで作業できますが、得られる出力を解析するのが少し難しいので、データを取得できるより良い方法や、より管理しやすい構文があるかどうかを尋ねたかっただけです。コメントよろしくお願いします。

4

3 に答える 3

6

pywikipediabotを使用して、記事のウィキテキストを取得することもできます。たとえば、Tom Cruise のウィキテキストを取得するには、例のように、次を使用できます。

import wikipedia

page = wikipedia.Page(wikipedia.getSite(), 'Tom_Cruise')

pageText = page.get()

print pageText

このようにして、テンプレートからデータを取得しようとすることができ、必要に応じてウィキテキスト用のパーサーがいくつかあります。

于 2012-11-28T23:37:55.707 に答える
2

DBpedia を使用すると、ウィキペディアの構造化された情報をクエリで取得できます。 http://dbpedia.org/

于 2012-10-21T13:41:38.163 に答える
2

HTML ページからデータを抽出するのは楽しいことではありませんが、http://scrapy.org/を使用するとはるかに簡単になると思います。XPath を使用してデータを抽出できますが、これは非常に強力です。そのようにデータを取得したい場合は、間違いなくスクレイピーを使用します。

データを取得するための他のオプションがあるかどうかも確認する必要があります。私の知る限り、ウィキペディアのデータ ダンプをダウンロードすることは可能です。あなたのユースケースではやり過ぎかもしれませんが、他の API が存在する可能性があります。

于 2012-10-14T22:07:06.597 に答える