2012-05-24 39 views
2

我想用python庫或庫標記出感興趣的維基百科頁面。我最感興趣的是表格和列表。我希望能夠將這些數據導入到Postgres或Neo4j中。可以標記維基百科頁面的Python庫

例如,這裏有三組數據,我會感興趣的:

0123:世界各地的太陽能發電廠 http://en.wikipedia.org/wiki/List_of_circulating_currencies
  • 列表

    其中每一個的來源都是用維基百科的標記品牌編寫的,這些標記用於渲染它們。原始數據表單中使用了許多wikipedia特有的標籤和語法。 HTML可能幾乎是更簡單的解決方案,因爲我可以使用BeautifulSoup。

    任何人都知道更好的標記化方法嗎?我覺得如果我把最終的HTML和BeautifulSoup解析出來,我會重新發明。另外,如果我能找到一種方法來以XML格式輸出這些頁面,那麼表格數據可能不夠標記,並且需要進一步處理。

  • +0

    [Here](http://www.mediawiki.org/wiki/Alternative_parsers)是wiki語法的一些解析器。有一些Python解決方案,但您應該選擇一個生成中間表示的程序,以便進一步處理。例如,[mediawiki-parser](https://github.com/peter17/mediawiki-parser)看上去很有希望。 – schlamar

    +0

    [這是一個使用mediawiki api將數據作爲XML獲取的示例。](http://stackoverflow.com/a/8045486/4279)注意:它不標記標記(對於一些特定情況,它可能更簡單處理原始文本而不是某個mediawiki標記解析器的標記化輸出)。 – jfs

    回答

    2

    由於維基百科建立在MediWiki上,因此您可以利用api。還有你可以使用的Special:Export

    一旦你有了原始數據,那麼你可以運行它通過mwlib來解析它。

    +0

    謝謝,但我是專門在一個已經標記頁面的Python庫之後。如果我從這個API開始,我會寫很多代碼,如果我要使用類似python-wikitools的東西,那麼仍然會有很多解析工作要做。 –

    +0

    注意:mwlib在使用皇家屁股的時候會很痛苦,如果你不打算託管代碼(而且你正在尋找去掉不需要的標記,那就去那裏試過了。關於它 – Crisfole

    +0

    感謝您的升溫Chris!:D –

    1

    這更多的是語義Web方向,但DBPedia允許使用SPARQL查詢維基百科數據的部分(社區轉換工作)。這使得理論上直接提取所需的數據,但是處理RDF三元組可能會很麻煩。

    此外,我不知道DBPedia是否包含任何您感興趣的數據。

    +0

    謝謝,我看了一下,它沒有包含任何表格數據,似乎對文章的結構更感興趣,而不是內容。http://dbpedia.org/頁面/ Eurovision_Song_Contest_2008沒有得分表,你可以在http://en.wikipedia.org/wiki/Eurovision_Song_Contest_2008#Final –

    +0

    @MarkL上找到表格。仔細一看,你是對的。我實際上會說,項目參與者可能最感興趣的是將事物分類並將事物之間的關係明確(與語義網相關)而不是數據集。 – jhonkola