Самый легкий способ парсинга таблиц с веб-страниц?
-
- Уже с Приветом
- Posts: 20128
- Joined: 21 Feb 2009 22:55
- Location: Лох Онтарио
Самый легкий способ парсинга таблиц с веб-страниц?
Посмотрел я на всякие скрипты для питона... ИМХО, это слишком сложно для не-программиста. А бывает что-нибудь попроще, чтобы какой-нибудь журналист-гуманитарий мог использовать? Ну, типа, на примере одной страницы графически показал, как таблицу коцать, а оно дальше само научилось аналогичные веб-страницы обрабатывать? Ну, примерно как с адблоком — там же не нужно указывать код html, который нужно блокировать, а можно просто ткнуть мышью в нужный элемент, и он сам выясняет, что за код скрывается за элементом...
-
- Новичок
- Posts: 79
- Joined: 28 Mar 2016 20:32
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Не понимаю. Скопировать таблицу на странице - вставить в эксель же работает?
-
- Уже с Приветом
- Posts: 20128
- Joined: 21 Feb 2009 22:55
- Location: Лох Онтарио
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Часто — нет. Но даже когда работает, сделать это для тысяч веб-страниц нереально.
-
- Уже с Приветом
- Posts: 4827
- Joined: 15 May 2001 09:01
Re: Самый легкий способ парсинга таблиц с веб-страниц?
А таблица рендерится на сервере или на клиенте?
-
- Уже с Приветом
- Posts: 20128
- Joined: 21 Feb 2009 22:55
- Location: Лох Онтарио
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Думаю, у клиента. Пользователь получает полноценный файл с таблицей в коде html, который можно сохранить.
-
- Ник закрыт за хамство.
- Posts: 357
- Joined: 16 Feb 2014 18:34
Самый легкий способ парсинга таблиц с веб-страниц?
Wget или curl чтобы скачать. Если там есть < table ></ table >, и единственный, то просто этот кусок выкусить, а потом уже есть куча способов. В том числе и программка готовая наверняка найдётся.
Last edited by Deckel on 27 Sep 2016 00:40, edited 1 time in total.
-
- Уже с Приветом
- Posts: 4827
- Joined: 15 May 2001 09:01
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Уточните свою задачу. На клиенте рендерится - значит tr/td рисует Javascript на клиенте, а не то, что Вы написали.
-
- Уже с Приветом
- Posts: 20128
- Joined: 21 Feb 2009 22:55
- Location: Лох Онтарио
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Сорри, не разбираюсь я в этом. Вот, пример. В нем tr/td.
http://www.saratov.vybory.izbirkom.ru/r ... 9&type=233" onclick="window.open(this.href);return false;
http://www.saratov.vybory.izbirkom.ru/r ... 9&type=233" onclick="window.open(this.href);return false;
-
- Уже с Приветом
- Posts: 4827
- Joined: 15 May 2001 09:01
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Там есть ссылочка на табличку Excel - вот её и скачайте.
Но вообще-то правильно будет просто найти агрегированные результаты.
Но вообще-то правильно будет просто найти агрегированные результаты.
-
- Уже с Приветом
- Posts: 20128
- Joined: 21 Feb 2009 22:55
- Location: Лох Онтарио
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Это пример. Вопрос о том, есть ли какие-нибудь автоматические способы парсинга для не-прогаммистов.
-
- Уже с Приветом
- Posts: 4827
- Joined: 15 May 2001 09:01
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Общий рецепт мне неизвестен.
-
- Уже с Приветом
- Posts: 14407
- Joined: 26 May 2006 02:39
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Такое точно есть - я недавно игрался с похожим стартапом так он вытягивал дату любых сайтов через UI ( нужно было кликать и т.д. ) и её можно было скачивать как CSV, Json...
Название в упор не помню
Название в упор не помню
Бога нет.
-
- Уже с Приветом
- Posts: 4205
- Joined: 10 Jan 2004 01:22
- Location: n-sk -> MD -> VA
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Selenium, etc.
-
- Уже с Приветом
- Posts: 20128
- Joined: 21 Feb 2009 22:55
- Location: Лох Онтарио
Re: Самый легкий способ парсинга таблиц с веб-страниц?
О! Точно, я совсем забыл про Selenium, а ведь его предлагали Леониду В по схожему вопросу...
PS С другой стороны, может, мне полезнее разобраться, как парсить в каком-нибудь Питоне? Усилий, конечно, больше, чем в ГУИ, но зато универсальность... Просто в последнее время я все чаще стал сталкиваться с необходимостью сбора инфы из недр интернетов... Надо какой-нибудь курс взять что ли. А то чувствую, пригодится в будущем для работы.
PS С другой стороны, может, мне полезнее разобраться, как парсить в каком-нибудь Питоне? Усилий, конечно, больше, чем в ГУИ, но зато универсальность... Просто в последнее время я все чаще стал сталкиваться с необходимостью сбора инфы из недр интернетов... Надо какой-нибудь курс взять что ли. А то чувствую, пригодится в будущем для работы.
-
- Уже с Приветом
- Posts: 1663
- Joined: 16 Jul 2009 14:18
- Location: Uganda
Re: Самый легкий способ парсинга таблиц с веб-страниц?
А вы уверены, что покроете все возможные варианты? Там ведь с этими таблицами народ извращается - верстка, объединенные колонки, зачастую хитрые ребята картинки в качестве "итого" для таблиц применяют. Зоопарк, одним словом.perasperaadastra wrote:С другой стороны, может, мне полезнее разобраться, как парсить в каком-нибудь Питоне?
-
- Уже с Приветом
- Posts: 20128
- Joined: 21 Feb 2009 22:55
- Location: Лох Онтарио
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Само собой, трудности будут. Но я все же решил посмотреть в сторону beautifulsoup на питоне — вдруг пойдет?
-
- Уже с Приветом
- Posts: 2305
- Joined: 14 Apr 1999 09:01
- Location: Ural->CA
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Если уж питон, то scrapy
Alcohol, Tobacco, Firearms, and Explosives. The makings of a great weekend in West Virginia!
-
- Уже с Приветом
- Posts: 20128
- Joined: 21 Feb 2009 22:55
- Location: Лох Онтарио
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Пишут, что вроде как bs попроще/полегче.
-
- Уже с Приветом
- Posts: 20128
- Joined: 21 Feb 2009 22:55
- Location: Лох Онтарио
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Какой-то 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' больше одного? Или это я ослеп?
UPD
Кажется, я понял в чем дело. Тэг <link href="header/66/66.css" rel="stylesheet" type="text/css"> перед вторым тэгом таблицы не закрывается (</...>), поэтому bs считает, что второй тэг таблицы уже не ребенок, а внук по отношению к <body>
Вот как так, а?
<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' больше одного? Или это я ослеп?
UPD
Кажется, я понял в чем дело. Тэг <link href="header/66/66.css" rel="stylesheet" type="text/css"> перед вторым тэгом таблицы не закрывается (</...>), поэтому bs считает, что второй тэг таблицы уже не ребенок, а внук по отношению к <body>
Вот как так, а?
You do not have the required permissions to view the files attached to this post.
-
- Уже с Приветом
- Posts: 63377
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Самый легкий способ парсинга таблиц с веб-страниц?
TC - учи албанский Python!
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 4827
- Joined: 15 May 2001 09:01
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Это валидный HTML4, и программа, если она претендует на универсальность, должна такое понимать.perasperaadastra wrote:Кажется, я понял в чем дело. Тэг <link href="header/66/66.css" rel="stylesheet" type="text/css"> перед вторым тэгом таблицы не закрывается (</...>), поэтому bs считает, что второй тэг таблицы уже не ребенок, а внук по отношению к <body>
-
- Уже с Приветом
- Posts: 1491
- Joined: 08 Mar 2002 10:01
- Location: NJ
Re: Самый легкий способ парсинга таблиц с веб-страниц?
ЕМНИП линку не положено иметь закрывающий тег. Может просто вычистить ненужные теги для начала?
-
- Уже с Приветом
- Posts: 4205
- Joined: 10 Jan 2004 01:22
- Location: n-sk -> MD -> VA
Re: Самый легкий способ парсинга таблиц с веб-страниц?
если выучить китайский HTML, то не понадобится PythonFlash-04 wrote:TC - учи албанский Python!
-
- Уже с Приветом
- Posts: 20128
- Joined: 21 Feb 2009 22:55
- Location: Лох Онтарио
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Вот и я так подумал, но что-то здесь сбивает парсер с толку. Я почитал интернеты и прямо вот-такого не нашел, но люди жалуются со схожими проблемами неправильной трактовки вложенных тегов. Как я понял, можно добавить в парсер свои правила, чтобы исправлять проблемы, но мне кажется, что в такой элементарном случае это должно работать без моего вмешательства.helg wrote:Это валидный HTML4, и программа, если она претендует на универсальность, должна такое понимать.perasperaadastra wrote:Кажется, я понял в чем дело. Тэг <link href="header/66/66.css" rel="stylesheet" type="text/css"> перед вторым тэгом таблицы не закрывается (</...>), поэтому bs считает, что второй тэг таблицы уже не ребенок, а внук по отношению к <body>
Хорошая мысль, но, увы, мне нужны будут некоторые ссылки в документе.ALV00 wrote:ЕМНИП линку не положено иметь закрывающий тег. Может просто вычистить ненужные теги для начала?
В принципе, этот баг не помешал мне выцарапать таблицу — просто пришлось искать нужный тэг через рекурсивный поиск. Перебором нашел, что это 8й элемент в списке. Можно было вообще не мучаться с позиционированием относительно корня, а сразу искать тэг таблицы с нужными свойствами (пожалуй, это было бы надежнее).
В общем, у меня получилось сделать довольно уродский скрипт, который работает. Конечно, потратил на все это дело уже часов 10, но по крайней мере, узнал что-то на будущее.
Так, вроде, этим и занимаюсь. Етот beautifulsoup для Змеюки и есть.Flash-04 wrote:TC - учи албанский Python!
-
- Уже с Приветом
- Posts: 63377
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Самый легкий способ парсинга таблиц с веб-страниц?
Вот и отлично
Not everyone believes what I believe but my beliefs do not require them to.