тогда это должно дать мне способ доступа к вложенным тегам через имя или идентификатор HTML-тега, чтобы я мог в принципе попросить его предоставить мне содержимое / текст в div теге с class='container' содержимым внутри body тега, или что-то подобное.
Если вы использовали функцию "Проверять элемент" в Firefox (просмотр HTML), вы бы знали, что она предоставляет вам все теги в удобном вложенном виде, как дерево.
Я бы предпочел встроенный модуль, но это может потребовать слишком многого.
Я просмотрел множество вопросов о Stack Overflow и несколько блогов в Интернете, и большинство из них предлагают BeautifulSoup, или lxml, или HTMLParser, но лишь немногие из них подробно описывают функциональность и просто заканчиваются спорами о том, какой из них быстрее / эффективнее.
Переведено автоматически
Ответ 1
Чтобы я мог попросить его предоставить мне содержимое / текст в теге div с class ='container', содержащемся в теге body , или что-то подобное.
try: from BeautifulSoup import BeautifulSoup except ImportError: from bs4 import BeautifulSoup html = #the HTML code you've written above parsed_html = BeautifulSoup(html) print(parsed_html.body.find('div', attrs={'class':'container'}).text)
Я думаю, вам не нужны описания производительности - просто прочитайте, как работает BeautifulSoup. Посмотрите на его официальную документацию.
from pyquery import PyQuery html = # Your HTML CODE pq = PyQuery(html) tag = pq('div#id') # or tag = pq('div.class') print tag.text()
И он использует те же селекторы, что и элемент inspect в Firefox или Chrome. Например:
Проверяемый селектор элемента 'div # mw-head.noprint' . Итак, в pyquery вам просто нужно передать этот селектор:
pq('div#mw-head.noprint')
Ответ 3
Здесь вы можете прочитать больше о различных анализаторах HTML на Python и их производительности. Несмотря на то, что статья немного устарела, она все равно дает вам хороший обзор.
И с cssselect его довольно просто использовать и для очистки HTML-страниц:
from lxml.html import parse doc = parse('http://www.google.com').getroot() for div in doc.cssselect('a'): print'%s: %s' % (div.text_content(), div.get('href'))