Что такое красивый метод, связанный с супом?
Я экспериментирую с http://robobrowser.readthedocs.org/en/latest/readme.html, новой библиотекой python, основанной на красивой библиотеке супов. Я пытаюсь проверить это, открыв html-страницу и вернув ее в приложение django, но не могу понять, как выполнить эту самую простую задачу. Мое приложение Django содержит:
def index(request):
p=str(request.POST.get('p', False)) # p='https://www.yahoo.com/'
browser = RoboBrowser(history=True)
browser.open(p)
html = browser.find_all
return HttpResponse(html)
когда я смотрю на выведенный HTML, я вижу:
<bound method BeautifulSoup.find_all of
<!DOCTYPE html>
<html>
......................
<head>
...............
</body>
</html>
>
Что такое красивый метод, связанный с супом? Как я могу получить прямой HTML?
2 ответа
Это объект метода, связанный с BeautifulSoup
объект. Вы не называли это.
Это представление немного сбивает с толку, потому что repr()
дерева разбора BeautifulSoup, которое представляет собой просто дерево, отображаемое в виде исходной строки HTML.
Чтобы добраться до базового дерева разбора BeautifulSoup, вы можете использовать; использование str()
чтобы превратить это обратно в исходную строку:
html = str(browser.state.parsed)
Кроме того, вы все еще можете получить доступ к оригиналу requests
объект ответа с:
browser.state.response
Это означает, что оригинальный загруженный HTML-файл находится как:
html = browser.state.response.content
BeautifulSoup — это пакет Python, используемый для синтаксического анализа документов HTML и XML. Он создает дерево синтаксического анализа для проанализированных страниц, которое можно использовать для очистки веб-страниц.
Существует множество методов Beautifulsoup, которые позволяют нам выполнять поиск по дереву синтаксического анализа. Если мы будем искать вне этого дерева, оно будет за пределами границ.
.next_sibling и .previous_sibling — это теги, которые используются для навигации между элементами страницы, находящимися на одном уровне дерева синтаксического анализа.