BeautifulSoup: получить содержимое определенной таблицы

мой местный аэропорт позорно блокирует пользователей без IE и выглядит ужасно. Я хочу написать скрипты Python, которые будут получать содержимое страниц прибытия и отправления каждые несколько минут и показывать их более читаемым образом.

мои инструменты выбора являются механизировать для обмана сайта, чтобы поверить, что я использую IE, и BeautifulSoup для разбора страницы, чтобы получить таблицу данных рейсов.

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

какие идеи?

3 ответов


Это не конкретный код, который вам нужен, просто демонстрация того, как работать с BeautifulSoup. Он находит таблицу, идентификатор которой является "Table1", и получает все ее элементы tr.

html = urllib2.urlopen(url).read()
bs = BeautifulSoup(html)
table = bs.find(lambda tag: tag.name=='table' and tag.has_attr('id') and tag['id']=="Table1") 
rows = table.findAll(lambda tag: tag.name=='tr')

soup = BeautifulSoup(HTML)

# the first argument to find tells it what tag to search for
# the second you can pass a dict of attr->value pairs to filter
# results that match the first tag
table = soup.find( "table", {"title":"TheTitle"} )

rows=list()
for row in table.findAll("tr"):
   rows.append(row)

# now rows contains each tr in the table (as a BeautifulSoup object)
# and you can search them to pull out the times

просто если вы заботитесь, BeautifulSoup больше не поддерживается, и оригинальный сопровождающий предлагает переход на lxml. Xpath должен сделать трюк просто красиво.