Извлечение значений таблицы из HTML веб-страниц автоматически
Я использую MRTG для мониторинга использования CPU/MEM/ трафика устройств, и каждое устройство имеет разные порты / vlans / интерфейсы. Когда я хочу создать таблицу / Excel, показывающую статистику всех интерфейсов, я обнаружил, что это очень неэффективно, потому что мне нужно кликнуть около 400 веб-страниц и скопировать таблицы (входящий / исходящий трафик, Макс. / Ср. / Текущая загрузка ЦП, Макс. /Avg Соединения и т. Д.) Из HTML.
Мой вопрос: есть ли скрипты / инструменты для автоматизации этой работы? Извлечение определенных значений таблицы из каждой веб-страницы и заполнение таблицы / Excel.
2 ответа
Я наконец нашел расширение Firefox iMacros для Firefox очень полезным для записи и воспроизведения повторяющейся работы. Он работает хорошо и эффективно при извлечении данных из массивных веб-страниц с одинаковыми структурами.
Более того, в iMacros есть подробные руководства и примеры кодов. iMacros для Firefox бесплатен для личного и коммерческого использования, если вы беспокоитесь об этом (как и я).
Я настоятельно рекомендую iMacros, если вы хотите автоматизировать какую-то громоздкую работу!
Вы можете обнаружить, что есть лучшие способы получить нужные данные, чем анализ HTML-кода, сгенерированного MRTG (например, например, использование SNMP напрямую). Тем не менее, это может помочь, если действительно нужно проанализировать HTML:
Если вы готовы использовать Python, вам поможет библиотека BeautifulSoup. Вам все равно придется написать код, но BeautifulSoup довольно гибок.
Вот грубый пример, который выгружает все таблицы HTML на странице в CSV:
import sys
import csv
import urllib2
import BeautifulSoup
page = urllib2.urlopen(sys.argv[1]).read()
soup = BeautifulSoup.BeautifulSoup(page)
csvout = csv.writer(sys.stdout)
for table in soup.findAll('table'):
print '#'
print '# Table'
print '# Fields: ' + ','.join([tr.text for tr in table.findAll('th')])
for row in table.findAll('tr'):
csvout.writerow([tr.text for tr in row.findAll('td')])
print
Предполагая, что у вас установлен Python, а также BeautifulSoup (pip install BeautifulSoup
или же easy_install BeautifulSoup
) и предполагая, что вы сохранили вышеуказанный код как htmltable2csv.py
Вы можете отобразить все таблицы на странице следующим образом:
python htmltable2csv.py http://www.w3schools.com/tags/tag_table.asp