Самый легкий способ парсинга таблиц с веб-страниц?

User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Самый легкий способ парсинга таблиц с веб-страниц?

Post by perasperaadastra »

Посмотрел я на всякие скрипты для питона... ИМХО, это слишком сложно для не-программиста. А бывает что-нибудь попроще, чтобы какой-нибудь журналист-гуманитарий мог использовать? Ну, типа, на примере одной страницы графически показал, как таблицу коцать, а оно дальше само научилось аналогичные веб-страницы обрабатывать? Ну, примерно как с адблоком — там же не нужно указывать код html, который нужно блокировать, а можно просто ткнуть мышью в нужный элемент, и он сам выясняет, что за код скрывается за элементом...
kjfk
Новичок
Posts: 79
Joined: 28 Mar 2016 20:32

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by kjfk »

Не понимаю. Скопировать таблицу на странице - вставить в эксель же работает?
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by perasperaadastra »

Часто — нет. Но даже когда работает, сделать это для тысяч веб-страниц нереально.
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by helg »

А таблица рендерится на сервере или на клиенте?
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by perasperaadastra »

Думаю, у клиента. Пользователь получает полноценный файл с таблицей в коде html, который можно сохранить.
Deckel
Ник закрыт за хамство.
Posts: 357
Joined: 16 Feb 2014 18:34

Самый легкий способ парсинга таблиц с веб-страниц?

Post by Deckel »

Wget или curl чтобы скачать. Если там есть < table ></ table >, и единственный, то просто этот кусок выкусить, а потом уже есть куча способов. В том числе и программка готовая наверняка найдётся.
Last edited by Deckel on 27 Sep 2016 00:40, edited 1 time in total.
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by helg »

Уточните свою задачу. На клиенте рендерится - значит tr/td рисует Javascript на клиенте, а не то, что Вы написали.
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by perasperaadastra »

Сорри, не разбираюсь я в этом. Вот, пример. В нем tr/td.
http://www.saratov.vybory.izbirkom.ru/r ... 9&type=233" onclick="window.open(this.href);return false;
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by helg »

Там есть ссылочка на табличку Excel - вот её и скачайте.

Но вообще-то правильно будет просто найти агрегированные результаты.
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by perasperaadastra »

Это пример. Вопрос о том, есть ли какие-нибудь автоматические способы парсинга для не-прогаммистов.
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by helg »

Общий рецепт мне неизвестен.
User avatar
stenking
Уже с Приветом
Posts: 14407
Joined: 26 May 2006 02:39

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by stenking »

Такое точно есть - я недавно игрался с похожим стартапом так он вытягивал дату любых сайтов через UI ( нужно было кликать и т.д. ) и её можно было скачивать как CSV, Json...

Название в упор не помню
Бога нет.
User avatar
fruit6
Уже с Приветом
Posts: 4205
Joined: 10 Jan 2004 01:22
Location: n-sk -> MD -> VA

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by fruit6 »

Selenium, etc.
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by perasperaadastra »

О! Точно, я совсем забыл про Selenium, а ведь его предлагали Леониду В по схожему вопросу...

PS С другой стороны, может, мне полезнее разобраться, как парсить в каком-нибудь Питоне? Усилий, конечно, больше, чем в ГУИ, но зато универсальность... Просто в последнее время я все чаще стал сталкиваться с необходимостью сбора инфы из недр интернетов... Надо какой-нибудь курс взять что ли. А то чувствую, пригодится в будущем для работы.
mynameiszb
Уже с Приветом
Posts: 1666
Joined: 16 Jul 2009 14:18
Location: Uganda

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by mynameiszb »

perasperaadastra wrote:С другой стороны, может, мне полезнее разобраться, как парсить в каком-нибудь Питоне?
А вы уверены, что покроете все возможные варианты? Там ведь с этими таблицами народ извращается - верстка, объединенные колонки, зачастую хитрые ребята картинки в качестве "итого" для таблиц применяют. Зоопарк, одним словом.
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by perasperaadastra »

Само собой, трудности будут. Но я все же решил посмотреть в сторону beautifulsoup на питоне — вдруг пойдет?
User avatar
Albert_al
Уже с Приветом
Posts: 2308
Joined: 14 Apr 1999 09:01
Location: Ural->CA

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by Albert_al »

Если уж питон, то scrapy
Alcohol, Tobacco, Firearms, and Explosives. The makings of a great weekend in West Virginia!
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by perasperaadastra »

Пишут, что вроде как bs попроще/полегче.
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by perasperaadastra »

Какой-то beautifulsoup странный. У меня структура страницы вот такая:
<body>
<table>...#1</table>
<table>...#2</table>
<table>...#3</table>
<table>...#4</table>
</body>

Делаю так: len(ДОКУМЕНТ.find('body').find_all('table', recursive=False))
и получаю 1, хотя должно быть 4

Если убрать 'recursive=False' то находятся все тэги, но там проблема в том что ищутся еще и внуки, правнуки и т.д.(в документе имеются вложенные тэги таблицы). Поскольку мне нужны только дети <body>, то нужен запрет рекурсии. Но почему он тогда находит только одного ребенка, когда их должно быть четыре???

Прикрепляю скриншот дерева документа. Как вы считаете, я прав, что там детей 'body' с тэгом 'table' больше одного? Или это я ослеп?
beautifulsoup.png
UPD

Кажется, я понял в чем дело. Тэг <link href="header/66/66.css" rel="stylesheet" type="text/css"> перед вторым тэгом таблицы не закрывается (</...>), поэтому bs считает, что второй тэг таблицы уже не ребенок, а внук по отношению к <body>

Вот как так, а? :upset:
You do not have the required permissions to view the files attached to this post.
User avatar
Flash-04
Уже с Приветом
Posts: 63377
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by Flash-04 »

TC - учи албанский Python!
Not everyone believes what I believe but my beliefs do not require them to.
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by helg »

perasperaadastra wrote:Кажется, я понял в чем дело. Тэг <link href="header/66/66.css" rel="stylesheet" type="text/css"> перед вторым тэгом таблицы не закрывается (</...>), поэтому bs считает, что второй тэг таблицы уже не ребенок, а внук по отношению к <body>
Это валидный HTML4, и программа, если она претендует на универсальность, должна такое понимать.
User avatar
ALV00
Уже с Приветом
Posts: 1491
Joined: 08 Mar 2002 10:01
Location: NJ

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by ALV00 »

ЕМНИП линку не положено иметь закрывающий тег. Может просто вычистить ненужные теги для начала?
User avatar
fruit6
Уже с Приветом
Posts: 4205
Joined: 10 Jan 2004 01:22
Location: n-sk -> MD -> VA

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by fruit6 »

Flash-04 wrote:TC - учи албанский Python!
если выучить китайский HTML, то не понадобится Python
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by perasperaadastra »

helg wrote:
perasperaadastra wrote:Кажется, я понял в чем дело. Тэг <link href="header/66/66.css" rel="stylesheet" type="text/css"> перед вторым тэгом таблицы не закрывается (</...>), поэтому bs считает, что второй тэг таблицы уже не ребенок, а внук по отношению к <body>
Это валидный HTML4, и программа, если она претендует на универсальность, должна такое понимать.
Вот и я так подумал, но что-то здесь сбивает парсер с толку. Я почитал интернеты и прямо вот-такого не нашел, но люди жалуются со схожими проблемами неправильной трактовки вложенных тегов. Как я понял, можно добавить в парсер свои правила, чтобы исправлять проблемы, но мне кажется, что в такой элементарном случае это должно работать без моего вмешательства.
ALV00 wrote:ЕМНИП линку не положено иметь закрывающий тег. Может просто вычистить ненужные теги для начала?
Хорошая мысль, но, увы, мне нужны будут некоторые ссылки в документе.

В принципе, этот баг не помешал мне выцарапать таблицу — просто пришлось искать нужный тэг через рекурсивный поиск. Перебором нашел, что это 8й элемент в списке. Можно было вообще не мучаться с позиционированием относительно корня, а сразу искать тэг таблицы с нужными свойствами (пожалуй, это было бы надежнее).

В общем, у меня получилось сделать довольно уродский скрипт, который работает. Конечно, потратил на все это дело уже часов 10, но по крайней мере, узнал что-то на будущее. :-)
Flash-04 wrote:TC - учи албанский Python!
Так, вроде, этим и занимаюсь. Етот beautifulsoup для Змеюки и есть. :)
User avatar
Flash-04
Уже с Приветом
Posts: 63377
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: Самый легкий способ парсинга таблиц с веб-страниц?

Post by Flash-04 »

Вот и отлично :)
Not everyone believes what I believe but my beliefs do not require them to.

Return to “Вопросы и новости IT”