Написание скрипта для извлечения определенной части веб-страницы в цикле для автономного использования - PullRequest
0 голосов
/ 21 апреля 2011

У меня есть конкретное использование. Я готовлюсь к GRE. Каждый раз, когда приходит новое слово, я смотрю на www.mnemonicdictionary.com, для его значений и мнемоники. Я хочу написать скрипт на языке Python (или, если кто-то может предоставить мне указатель на уже существующую вещь, так как я не очень много знаю Python, но сейчас учусь), который берет список слов из текстового файла и ищет его на этом сайте, и просто получить соответствующую часть (значение и мнемонику) и сохранить его еще один текстовый файл для автономного использования. Возможно ли это сделать ?? Я также пытался найти источник этих страниц. Но наряду с HTML-тегами у них также есть некоторые функции ajax. Может ли кто-нибудь предоставить мне полный путь, как это сделать ??

Пример: для слова impecunious:

связанный источник HTML похож на это

<ul class='wordnet'><li><p>(adj.)&nbsp;not having enough money to pay for necessities</p><u>synonyms</u> : <a href='http://www.mnemonicdictionary.com/word/hard up' onclick="ajaxSearch('hard up','click'); return false;">hard up</a> , <a href='http://www.mnemonicdictionary.com/word/in straitened circumstances' onclick="ajaxSearch('in straitened circumstances','click'); return false;">in straitened circumstances</a> , <a href='http://www.mnemonicdictionary.com/word/penniless' onclick="ajaxSearch('penniless','click'); return false;">penniless</a> , <a href='http://www.mnemonicdictionary.com/word/penurious' onclick="ajaxSearch('penurious','click'); return false;">penurious</a> , <a href='http://www.mnemonicdictionary.com/word/pinched' onclick="ajaxSearch('pinched','click'); return false;">pinched</a><p></p></li></ul>

но веб-страница выглядит так:

• (прил.) Не хватает денег для оплаты необходимого синонимы: трудно, в стесненных обстоятельствах, без гроша в кармане, скупой, защемленный

Ответы [ 2 ]

3 голосов
/ 21 апреля 2011

Если у вас есть Bash (версия 4+) и wget, пример

#!/bin/bash
template="http://www.mnemonicdictionary.com/include/ajaxSearch.php?word=%s&event=search"
while read -r word
do
    url=$(printf "$template" "$word")
    data=$(wget -O- -q "$url")
    data=${data#*&nbsp;}
    echo "$word: ${data%%<*}"
done < file

Пример вывода

$> more file
synergy
tranquil
jester

$> bash dict.sh
synergy: the working together of two things (muscles or drugs for example) to produce an effect greater than the sum of their individual effects
tranquil: (of a body of water) free from disturbance by heavy waves
jester: a professional clown employed to entertain a king or nobleman in the Middle Ages

Обновление: Включить мнемонические

template="http://www.mnemonicdictionary.com/include/ajaxSearch.php?word=%s&event=search"
while read -r word
do
    url=$(printf "$template" "$word")
    data=$(wget -O- -q "$url")
    data=${data#*&nbsp;}
    m=${data#*class=\'mnemonic\'}
    m=${m%%</p>*}
    m="${m##*&nbsp;}"
    echo "$word: ${data%%<*}, mneumonic: $m"    
done < file
1 голос
/ 21 апреля 2011

Используйте curl и sed из оболочки Bash (Linux, Mac или Windows с Cygwin).

Если у меня будет секунда, я напишу быстрый сценарий ... хотя сейчас нужно дать ребенку ванну.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...