Вы можете получать данные из Интернета, используя встроенный urllib или urllib2, но сам синтаксический анализ является наиболее важной частью. Могу ли я предложить замечательную BeautifulSoup? Это может иметь дело практически с чем угодно.
http://www.crummy.com/software/BeautifulSoup/
Документация построена как учебник. Сорта:
http://www.crummy.com/software/BeautifulSoup/documentation.html
В вашем случае вам, вероятно, нужно использовать символы подстановки, чтобы увидеть все записи в словаре. Вы можете сделать что-то вроде этого:
import urllib2
def getArticles(query, start_index, count):
xml = urllib2.urlopen('http://pali.hum.ku.dk/cgi-bin/cpd/pali?' +
'acti=xsea&tsearch=%s&rfield=entr&recf=%d&recc=%d' %
(query, start_index, count))
# TODO:
# parse xml code here (using BeautifulSoup or an xml parser like Python's
# own xml.etree. We should at least have the name and ID for each article.
# article = (article_name, article_id)
return (article_names # a list of parsed names from XML
def getArticleContent(article):
xml = urllib2.urlopen('http://pali.hum.ku.dk/cgi-bin/cpd/pali?' +
'acti=xart&arid=%d&sphra=undefined' % article_id)
# TODO: parse xml
return parsed_article
Теперь вы можете зацикливаться на вещах. Например, чтобы получить все статьи, начинающиеся с 'ana', используйте подстановочный знак 'ana *' и повторяйте цикл, пока не получите никаких результатов:
query = 'ana*'
article_dict = {}
i = 0
while (true):
new_articles = getArticles(query, i, 100)
if len(new_articles) == 0:
break
i += 100
for article_name, article_id in new_articles:
article_dict[article_name] = getArticleContent(article_id)
Когда вы закончите, у вас будет словарь содержания всех статей, на которые ссылаются имена. Я пропустил сам синтаксический анализ, но в данном случае это довольно просто, поскольку все является XML. Возможно, вам даже не потребуется использовать BeautifulSoup (хотя он все еще удобен и прост в использовании для XML).
Слово предупреждения, хотя:
Вы должны проверить политику использования сайта (и, возможно, robots.txt), прежде чем пытаться тщательно отбирать статьи. Если вы просто получаете несколько статей для себя, они могут не заботиться (владелец авторских прав словаря, если это не общественное достояние, может заботиться, хотя), но если вы собираетесь почистить весь словарь, это будет немного интенсивное использование.