Как скопировать весь текст из URL-адреса (например, [Ctrl+A][Ctrl+C] с веб-браузером) в python?

Я знаю, что есть простой способ скопировать весь источник URL, но это не моя задача. Мне нужно точно сохранить только весь текст (так же, как пользователь веб-браузера копирует его) в файл * .txt.

Неизбежно ли для этого анализировать исходный код html или есть лучший способ?


person Bruno Gelb    schedule 07.05.2013    source источник


Ответы (3)


Я думаю, что это невозможно, если вы вообще не разбираете. Я думаю, вы могли бы использовать HtmlParser http://docs.python.org/2/library/htmlparser.html и просто сохраните теги данных, но вы, скорее всего, получите много других элементов, чем вы хотите.

Чтобы получить то же самое, что и [Ctrl-C], было бы очень сложно избежать синтаксического анализа из-за таких вещей, как style="display: hidden;" что скроет текст, что снова приведет к полному разбору html, javascript и css как файлов документа, так и файлов ресурсов.

person Enfenion    schedule 07.05.2013

Требуется разбор. Не знаю, есть ли библиотечный метод. Простое регулярное выражение:

text = sub(r"<[^>]+>", " ", html)

это требует многих улучшений, но это отправная точка.

person Dek Dekku    schedule 07.05.2013

С Python модуль BeautifulSoup отлично подходит для анализа HTML и заслуживает внимания. Чтобы получить текст с веб-страницы, это всего лишь случай:

#!/usr/env python
#
import urllib2
from bs4 import BeautifulSoup

url  = 'http://python.org'
html = urllib2.urlopen(url).read()
soup = BeautifulSoup(html)

# you can refine this even further if needed... ie. soup.body.div.get_text()
text = soup.body.get_text() 

print text
person msturdy    schedule 07.05.2013