Как я могу создать скрипт, который производит цитаты MLA? - PullRequest
1 голос
/ 27 ноября 2009

У меня есть папка, полная файлов Windows .URL. Я хотел бы перевести их в список цитат MLA для моей статьи.

Это хорошее приложение Python? Как я могу получить заголовки страниц? Я на Windows XP с Python 3.1.1.

Ответы [ 2 ]

3 голосов
/ 27 ноября 2009

Это фантастическое использование для Python! Формат файла .URL имеет следующий синтаксис:

[InternetShortcut]
URL=http://www.example.com/
OtherStuff=irrelevant

Чтобы проанализировать ваши .URL файлы, начните с ConfigParser, который прочитает это и создаст раздел InternetShortcut, из которого вы можете прочитать URL. Получив список URL-адресов, вы можете использовать urllib или urllib2 для загрузки URL-адреса и использовать тупое регулярное выражение для получения заголовка страницы (или BeautifulSoup, как предлагает Алекс).

Если у вас есть это, у вас есть список URL-адресов и заголовков страниц ... этого недостаточно для полной цитаты MLA, но должно быть достаточно для начала, не так ли?

Примерно так (очень грубо, кодирование в окне SO):

from glob import glob
from urllib2 import urlopen
from ConfigParser import ConfigParser
from re import search

# I use RE here, you might consider BeautifulSoup because RE can be stupid
TITLE = r"<title>([^<]+)</title>"

result = []
for file in glob("*.url"):
    config = ConfigParser.ConfigParser()
    config.read(file)
    url = config.get("InternetShortcut", "URL")

    # Get the title
    page = urlopen(url).read()
    try: title = search(TITLE, page).groups()[0]
    except: title = "Couldn't find title"

    result.append((url, title))

for url, title in result:
    print "'%s' <%s>" % (title, url)
2 голосов
/ 27 ноября 2009

Учитывая файл, который содержит HTML-страницу, вы можете проанализировать ее, чтобы извлечь ее заголовок, и BeautifulSoup является рекомендуемой сторонней библиотекой для работы. Получите версию BeautifulSoup, совместимую с Python 3.1 здесь , установите ее, затем:

  • анализирует содержимое каждого файла в soup объект, например с:

    от BeautifulSoup импорт BeautifulSoup html = open ('thefile.html', 'r'). read () суп = BeautifulSoup (html)

  • получить тег title, если есть, и распечатать его строковое содержимое (если есть):

    title = soup.find ('title') если заголовок отсутствует: напечатать («Нет заголовка!») еще: print ('Title:' + title.string)

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