Как извлечь данные из информационной страницы википедии? - PullRequest
0 голосов
/ 20 октября 2018

Моя цель - извлечь информацию о «найденных» и «продуктах» из информационного блока википедии на странице Microsoft .Я использую Python 3, и я использовал следующий код, который я нашел в Интернете, но он не работает

# importing modules 
import requests 
from lxml import etree 
# manually storing desired URL 
url='https://en.wikipedia.org/wiki/Microsoft'

# fetching its url through requests module   
req = requests.get(url)  

store = etree.fromstring(req.text) 

# trying to get the 'Founded' portion of above  
# URL's info box of Wikipedia's page 
output = store.xpath('//table[@class="infoboxvcard"]/tr[th/text()="Founded"]/td/i')  

# printing the text portion 
print output[0].text   

#Expected result:
 Founded:April 4, 1975; 43 years ago in Albuquerque, New Mexico, U.S.

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Вы, вероятно, должны использовать mwparserfromhell, пытаясь разобрать разметку MediaWiki самостоятельно ... пытается.С помощью mwparsefromhell вы можете отфильтровать шаблоны и извлечь их отдельные параметры.

code = mwparserfromhell.parse(text)
for template in code.filter_templates():
    if template.name.matches("infobox"):
       for p in template:#...

https://github.com/earwig/mwparserfromhell

0 голосов
/ 20 октября 2018

Неправильный Xpath использовался.Я получил правильный XPath для элемента со страницы Википедии, представленной в вопросе.Я также добавил в скобки оператор печати для совместимости с Python 3.

Попробуйте:

# importing modules
import requests
from lxml import etree
# manually storing desired URL
url='https://en.wikipedia.org/wiki/Microsoft'

# fetching its url through requests module
req = requests.get(url)

store = etree.fromstring(req.text)

# an incorrect xpath was being used
output = store.xpath('//*[@id="mw-content-text"]/div/table[2]/tbody/tr[7]/td')

# added parenthesis python 3 
print (output[0].text)

Я получу:

April 4, 1975
...