2011-11-11 14 views
6

Tôi cần lấy nội dung của hộp thông tin của bất kỳ bộ phim nào. Tôi biết tên của bộ phim. Một cách là lấy nội dung hoàn chỉnh của trang Wikipedia và sau đó phân tích nó cho đến khi tôi tìm thấy {{Infobox và sau đó lấy nội dung của hộp thông tin.Nội dung của infobox trên Wikipedia

Có cách nào khác để sử dụng cùng một số API hoặc trình phân tích cú pháp không?

Tôi đang sử dụng Python và API pywikipediabot.

Tôi cũng đã quen với API wikitools. Vì vậy, thay vì pywikipedia nếu ai đó có giải pháp liên quan đến API wikitools, hãy đề cập đến điều đó là tốt.

+1

Xem thêm ** [mediawiki api: cách nhận thông tin từ bài viết wikipedia] (http://stackoverflow.com/questions/7638402/mediawiki-api-how-to-get-infobox-from-a-wikipedia -article) ** và ** [Nhận tất cả các mẫu Wikipedia Infobox và tất cả các trang sử dụng chúng] (http://stackoverflow.com/questions/8000211/get-all-wikipedia-infobox-templates-and-all-pages-using -them) ** – hippietrail

+0

Bạn có muốn nhận chuỗi bao gồm mẫu hoặc kết quả được phân tích cú pháp không? – Bergi

Trả lời

6

Thay vì phát minh lại bánh xe, hãy kiểm tra DBPedia, đã trích xuất tất cả các hộp thông tin Wikipedia thành định dạng cơ sở dữ liệu dễ phân tích cú pháp.

+4

Tôi đã đề xuất điều này nhưng giáo sư của tôi muốn tôi làm theo cách này –

+0

Đây là toàn bộ các trình phân tích cú pháp MediaWiki sau: http://www.mediawiki.org/wiki/Alternative_parsers – jpatokal

+0

@jpatokal Nhưng làm cách nào tôi sử dụng các hoạt động REST để lấy dữ liệu hộp thông tin từ DBPedia. Bạn có thể xin vui lòng xin vui lòng chỉ ra hướng dẫn, tài nguyên và cung cấp cho một số hướng dẫn làm thế nào tôi có thể làm như vậy ???? –

0

Bạn có thể lấy nội dung wikipage bằng pywikipdiabot, và sau đó, bạn có thể tìm kiếm hộp thông tin với regex, trình phân tích cú pháp như mwlib [0] hoặc thậm chí gắn với pywikipediabot và sử dụng một trong các công cụ mẫu của mình. Ví dụ trên textlib bạn sẽ tìm thấy một số chức năng để đối phó với các mẫu (gợi ý: tìm kiếm cho "# Chức năng xử lý các mẫu"). [1]

[0] - http://pypi.python.org/pypi/mwlib

[1] - http://svn.wikimedia.org/viewvc/pywikipedia/trunk/pywikipedia/pywikibot/textlib.py?view=markup

7

Một phân tích cú pháp MediaWiki tuyệt vời là mwparserfromhell.

In [1]: import mwparserfromhell 

In [2]: import pywikibot 

In [3]: enwp = pywikibot.Site('en','wikipedia') 

In [4]: page = pywikibot.Page(enwp, 'Waking Life')    

In [5]: wikitext = page.get()    

In [6]: wikicode = mwparserfromhell.parse(wikitext) 

In [7]: templates = wikicode.filter_templates() 

In [8]: templates? 
Type:  list 
String Form:[u'{{Use mdy dates|date=September 2012}}', u"{{Infobox film\n| name   = Waking Life\n| im <...> critic film|waking-life|Waking Life}}', u'{{Richard Linklater}}', u'{{DEFAULTSORT:Waking Life}}'] 
Length:  31 
Docstring: 
list() -> new empty list 
list(iterable) -> new list initialized from iterable's items 

In [10]: templates[:2] 
Out[10]: 
[u'{{Use mdy dates|date=September 2012}}', 
u"{{Infobox film\n| name   = Waking Life\n| image   = Waking-Life-Poster.jpg\n| image_size  = 220px\n| alt   =\n| caption  = Theatrical release poster\n| director  = [[Richard Linklater]]\n| producer  = [[Tommy Pallotta]]<br />[[Jonah Smith]]<br />Anne Walker-McBay<br />Palmer West\n| writer   = Richard Linklater\n| starring  = [[Wiley Wiggins]]\n| music   = Glover Gill\n| cinematography = Richard Linklater<br />[[Tommy Pallotta]]\n| editing  = Sandra Adair\n| studio   = [[Thousand Words]]\n| distributor = [[Fox Searchlight Pictures]]\n| released  = {{Film date|2001|01|23|[[Sundance Film Festival|Sundance]]|2001|10|19|United States}}\n| runtime  = 101 minutes<!--Theatrical runtime: 100:40--><ref>{{cite web |title=''WAKING LIFE'' (15) |url=http://www.bbfc.co.uk/releases/waking-life-2002-3|work=[[British Board of Film Classification]]|date=September 19, 2001|accessdate=May 6, 2013}}</ref>\n| country  = United States\n| language  = English\n| budget   =\n| gross   = $3,176,880<ref>{{cite web|title=''Waking Life'' (2001)|work=[[Box Office Mojo]] |url=http://www.boxofficemojo.com/movies/?id=wakinglife.htm|accessdate=March 20, 2010}}</ref>\n}}"] 

In [11]: infobox_film = templates[1] 

In [12]: for param in infobox_film.params: 
      print param.name, param.value 

name    Waking Life 

image   Waking-Life-Poster.jpg 

image_size  220px 

alt    

caption   Theatrical release poster 

director   [[Richard Linklater]] 

producer   [[Tommy Pallotta]]<br />[[Jonah Smith]]<br />Anne Walker-McBay<br />Palmer West 

writer   Richard Linklater 

starring   [[Wiley Wiggins]] 

music   Glover Gill 

cinematography Richard Linklater<br />[[Tommy Pallotta]] 

editing   Sandra Adair 

studio   [[Thousand Words]] 

distributor  [[Fox Searchlight Pictures]] 

released   {{Film date|2001|01|23|[[Sundance Film Festival|Sundance]]|2001|10|19|United States}} 

runtime   101 minutes<!--Theatrical runtime: 100:40--><ref>{{cite web |title=''WAKING LIFE'' (15) |url=http://www.bbfc.co.uk/releases/waking-life-2002-3|work=[[British Board of Film Classification]]|date=September 19, 2001|accessdate=May 6, 2013}}</ref> 

country   United States 

language   English 

budget   

gross   $3,176,880<ref>{{cite web|title=''Waking Life'' (2001)|work=[[Box Office Mojo]] |url=http://www.boxofficemojo.com/movies/?id=wakinglife.htm|accessdate=March 20, 2010}}</ref> 

Đừng quên rằng thông số đó cũng là các đối tượng mwparserfromhell!