2014-04-10 1 views
1

Я новичок в Python и пытаюсь работать с Pattern. Моя цель - получить код, который даст мне синоним входного слова, посмотрев его из IndoWordnet. Язык должен быть бенгальским. У меня уже есть список слов. Но я не уверен, как именно, с помощью шаблона я могу веб-поиск ввода. Я пробовал следовать за http://arunrocks.com/easy-practical-web-scraping-in-python/. Это не помогло. Я хотел начать с проанализированной веб-страницы, и это то, что я сделал. Это плохо дает нам абсолютную связь.Как получить данные шахтер для конкретного поиска на веб-странице?

from lxml.html import fromstring 
from urllib2 import urlopen 
def get_page(url) : 
    html = urlopen(url).read() 
    dom = fromstring(html) 
    dom.make_links_absolute(url) 
    return dom 

dom = get_page('http://www.cfilt.iitb.ac.in/indowordnet/first?langno=3&queryword=%E0%A6%97%E0%A6%BE%E0%A6%A7%E0%A6%BE') 

<Element html at 0x50b4840> 

Но я застрял после этого, так как не знаю, как выполнить определенный поиск с рисунком. Пожалуйста помоги.

ответ

1

Это немного сложнее, чем кажется, потому существует запрос AJAX, который получает данные, которые вы хотите, чтобы очистить, так что сделайте это в два этапа:

  • получить специальное sid значение, соответствующее слово, которое вы ищут (он находится внутри label с id приписывать равен sid)
  • сделать еще один запрос на http://www.cfilt.iitb.ac.in/indowordnet/ajax/onto.jsp Проходя мимо sid вы схватил на первом шаге. Например, посмотрите, как это выглядит для sid=4827: http://www.cfilt.iitb.ac.in/indowordnet/ajax/onto.jsp?sid=4827

Вот код. Он печатает все антологии метки:

from lxml.html import parse 
from urllib2 import urlopen 

SID_URL = 'http://www.cfilt.iitb.ac.in/indowordnet/ajax/onto.jsp?sid=%s' 

url = 'http://www.cfilt.iitb.ac.in/indowordnet/first?langno=3&queryword=%E0%A6%97%E0%A6%BE%E0%A6%A7%E0%A6%BE' 
tree = parse(urlopen(url)) 

sid = tree.find('.//label[@id="sid"]').text 

tree = parse(urlopen(SID_URL % sid)) 
for record in tree.xpath('//ontorecord'): 
    print record.find('onto_label').text 

UPD (получение синонимов):

from lxml.html import parse 
from urllib2 import urlopen 

url = 'http://www.cfilt.iitb.ac.in/indowordnet/first?langno=3&queryword=%E0%A6%97%E0%A6%BE%E0%A6%A7%E0%A6%BE' 
tree = parse(urlopen(url)) 

for label in tree.xpath('.//label[@id="words"]/a'): 
    print label.text 
+0

@ user3458145 ок, извините, неправильно поняли немного, так как я не знаю, как хинди и бенгали. Проверьте раздел «UPD» - должны дать вам все синонимы. – alecxe

+0

@ user3458145 Я использовал инструменты разработчика Chrome -> вкладку в сети, чтобы узнать, какие вызовы AJAX идут. Речь идет не о python - большинство вещей связаны с xpath и web-scraping. – alecxe

+0

Как получить «% s» часть «http://www.cfilt.iitb.ac.in/indowordnet/ajax/onto.jsp?sid=%s»? – user3458145

Смежные вопросы