Печать определенного HTML Python Mechanize - PullRequest
1 голос
/ 14 октября 2011

Я делаю небольшой скрипт на python для автоматического входа на сайт. Но я застрял.

Я хочу напечатать в терминал небольшую часть html, расположенную внутри этого тега в html-файле на сайте:

<td class=h3 align='right'>&nbsp;&nbsp;John Appleseed</td><td>&nbsp;<a href="members_myaccount.php"><img border=0 src="../tbs_v7_0/images/myaccount.gif" alt="My Account"></a></td>

Но как мне извлечь и напечатать только имя, Джон Appleseed?

Кстати, я использую Механизм Питона на Mac.

Ответы [ 3 ]

7 голосов
/ 14 октября 2011

Механизация хороша только для получения HTML.Если вы хотите извлечь информацию из html, вы можете использовать, например, BeautifulSoup .(См. Также мой ответ на похожий вопрос: Веб-майнинг, анализ или сканирование? Какой инструмент / библиотеку мне следует использовать? )

В зависимости от того, где <td> находится в html(из вашего вопроса непонятно), вы можете использовать следующий код:

html = ... # this is the html you've fetched

from BeautifulSoup import BeautifulSoup

soup = BeautifulSoup(html)
# use this (gets all <td> elements)
cols = soup.findAll('td')
# or this (gets only <td> elements with class='h3')
cols = soup.findAll('td', attrs={"class" : 'h3'})
print cols[0].renderContents() # print content of first <td> element
1 голос
/ 14 октября 2011

Вы можете использовать парсер для извлечения любой информации в документе.Я предлагаю вам использовать lxml модуль.

Здесь у вас есть пример:

from lxml import etree
from StringIO import StringIO

parser = etree.HTMLParser()

tree = etree.parse(StringIO("""<td class=h3 align='right'>&nbsp;&nbsp;John Appleseed</td><td>&nbsp;<a href="members_myaccount.php"><img border=0 src="../tbs_v7_0/images/myaccount.gif" alt="My Account"></a></td>"""),parser)


>>> tree.xpath("string()").strip()
u'John Appleseed'

Подробнее о lxml здесь

1 голос
/ 14 октября 2011

Поскольку вы не указали полный HTML-код страницы, единственной возможностью сейчас является либо использование string.find (), либо регулярные выражения.

Но стандартный способ найти это - использовать xpath. Смотрите этот вопрос: Как использовать Xpath в Python?

Вы можете получить xpath для элемента, используя функцию «проверить элемент» в Firefox.

Например, если вы хотите найти XPATH для имени пользователя на сайте stackoverflow.

  • Откройте Firefox и войдите на веб-сайт и щелкните правой кнопкой мыши на имени пользователя (в моем случае shadyabhi) и выберите Inspect Element.
  • Наведите указатель мыши на тег или щелкните его правой кнопкой мыши и выберите «Копировать xpath».

enter image description here

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