Как получить содержимое HTML-страницы в Python - PullRequest
4 голосов
/ 10 марта 2010

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

Чтобы быть ясным:

Введите:

<html><head><title>Page title</title></head>
       <body><p id="firstpara" align="center">This is paragraph <b>one</b>.
       <p id="secondpara" align="blah">This is paragraph <b>two</b>.
       </html>

Выход:

Page title This is paragraph one. This is paragraph two.

составление:

from BeautifulSoup import BeautifulSoup
import re

def removeHtmlTags(page):
    p = re.compile(r'''<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>''')
    return p.sub('', page)

def removeHtmlTags2(page):
    soup = BeautifulSoup(page)
    return ''.join(soup.findAll(text=True))

Относящиеся

Ответы [ 6 ]

12 голосов
/ 10 марта 2010

Разбор HTML с Прекрасным супом .

Чтобы получить весь текст без тегов, попробуйте:

''.join(soup.findAll(text=True))
8 голосов
/ 10 марта 2010

Лично я использую lxml, потому что это швейцарский армейский нож ...

from lxml import html

print html.parse('http://someurl.at.domain').xpath('//body')[0].text_content()

Это заставляет lxml извлечь страницу, найти тег <body>, затем извлечь и напечатать весь текст.

Я много разбираюсь в страницах, и регулярное выражение - неправильное решение в большинстве случаев, если только это не является единовременной необходимостью. Если автор страницы изменяет свой HTML, вы рискуете нарушить свое регулярное выражение. Парсер, скорее всего, продолжит работать.

Большая проблема с анализатором заключается в том, чтобы узнать, как получить доступ к разделам документа, который вы ищете, но есть много инструментов XPATH, которые вы можете использовать внутри своего браузера, которые упрощают задачу.

2 голосов
/ 10 марта 2010

Вы хотите посмотреть Извлечение данных из документов HTML - Погрузитесь в Python , потому что ЗДЕСЬ это делает (почти) именно то, что ты хочешь.

1 голос
/ 10 марта 2010

Лучшими модулями для этой задачи являются lxml или html5lib; Красивое мыло имхо не стоит больше использовать. А для рекурсивных моделей регулярные выражения - определенно неправильный метод.

0 голосов
/ 10 марта 2010

Если я правильно понял ваш вопрос, это можно сделать с помощью функции urlopen urllib. Просто взгляните на эту функцию, чтобы открыть URL и прочитать ответ, который будет HTML-кодом этой страницы.

0 голосов
/ 10 марта 2010

Самый быстрый способ получить полезный образец того, что будет отображать браузер, - это удалить любые теги из html и распечатать остальные. Это может быть сделано, например, с использованием Python re.

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