Как из html вытащить таблицу
Перейти к содержимому

Как из html вытащить таблицу

  • автор:

Как из html вытащить таблицу

Argument ‘Topic id’ is null or empty

Сейчас на форуме

© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru

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

ООО «Планета Эксел»
ИНН 7735603520
ОГРН 1147746834949
ИП Павлов Николай Владимирович
ИНН 633015842586
ОГРНИП 310633031600071

Как извлечь данные из определенной ячейки html таблицы?

Здравствуйте господа умельцы =) Помогите пожалуйста решить проблему. Нужно извлечь данные из html таблицы: 1 строка, 3 столбец (Количество : 6) Нужна эта 6. Проблема в том что таблица динамическая и эта цифра 6 всегда разная.

 
Название товара Дата поступления Колличество
Повидло 04.08.2022 6
Консервы 01.08.2022 3
  • Вопрос задан более года назад
  • 599 просмотров

1 комментарий

Простой 1 комментарий

Как извлечь данные из HTML таблицы?

введите сюда описание изображения

У меня почему-то не получается извлечь данные. Как можно это сделать? Я подчеркнул что нужно достать. Вот код парсера:

def get_content(html): soup = BeautifulSoup(html, 'html.parser') items = soup.find_all('div', class_='page__content') something = [] for item in items: something.append(< 'name': item.find('td', class_='summary-data__cell').get_text(strip=True), >) print(something) 

Отслеживать
51.6k 202 202 золотых знака 65 65 серебряных знаков 249 249 бронзовых знаков
задан 21 мая 2021 в 13:58
human03289 human03289
27 5 5 бронзовых знаков
какой адрес страницы-донора?
21 мая 2021 в 14:32

Я не совсем понимаю, что такое адрес страницы-донора. Вот ссылка на сайт nasdaq.com/market-activity/stocks/nvda

21 мая 2021 в 14:36

@human03289, там таблица не приходит с страницей, она либо отдельным запросом подгружается, либо уже заготовлена в виде json/javascript и через javascript рендерится в таблицу html. Я бы просто сделал парсер через selenium 🙂

21 мая 2021 в 14:44

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Если открыть код, который присылает страница, то можно найти только пустую заготовку для таблицы:

введите сюда описание изображения

а сами данные прилетают позже и скриптом добавляются в нее.

import requests url = 'https://api.nasdaq.com/api/quote/NVDA/summary?assetclass=stocks' headers = r = requests.get(url, headers=headers) data = r.json()['data']['summaryData'] 

в data — словарь с данными для таблицы:

>>> data < 'Exchange': , 'Sector': , 'Industry': , 'OneYrTarget': , 'TodayHighLow': , 'ShareVolume': , 'AverageVolume': , 'PreviousClose': , 'FiftTwoWeekHighLow': , 'MarketCap': , 'PERatio': , 'ForwardPE1Yr': , 'EarningsPerShare': , 'AnnualizedDividend': , 'ExDividendDate': , 'DividendPaymentDate': , 'Yield': , 'Beta': > 

ваше значение для Beta находится в:

>>> data['Beta']['value'] 1.38 

Копирование html таблицы

Привет.
Например, имеем html таблицу https://www.ph4.ru/eng_irregular.php?al=a, хочется перенести её в сишный массив:

char *ar[] = ; 

Проблема: при тупом копировании теряется форматирование (теряются границы полей).

Вопрос: как обрамить начало и конец каждого поля таблицы некоторым символом (» например)?

Можно скопировать таблицы в google docs (табличный режим), например, он умеет макросы, может кто помочь с его написаниме?

Попутный вопрос: копирование в google docs корректно сохраняет границы полей, следовательно, разметка копируется в буфер обмена, почему я не вижу ее при в ставке в текстовый редактор?

pavlick ★★
01.03.20 07:00:03 MSK

Туплю, там табы видимо.

pavlick ★★
( 01.03.20 07:03:35 MSK ) автор топика

Миллионы вариантов. Вот тебе два первых, которые в голову пришли.

  1. Скопировать html код, пройтись регекспом с заменой тегов ‘’ на ‘», «’ в любом блокноте++. Прочие теги снести другим regexp, подсказываю /<[^>]+?>/ любой тег, /]*?>/ тег td и тд, подробно https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F.
  2. Скопировать в excel/openoffice calc, сохранить в формате csv, обычно можно еще разделель выбрать (по дефолту запятая, но можно другой, например ‘|’).

n008_b4800n
( 01.03.20 08:37:26 MSK )
Ответ на: комментарий от n008_b4800n 01.03.20 08:37:26 MSK

Спасибо, но уже разобрался. Вся проблема была в том, что не сразу въехал, что при копировании таблицы между полями табы (думал проблелы, там нет тегов). Поиск и замена табов в своём редакторе проблем не вызывает.

Вопрос не по теме — может знаете, мелкомягкие как-то анонсировали bash on windows, как дела у этого проекта? Достаточно ли полное там окружение (базовые либы)? Можно ли взять консольную линукс софтину (статически прилинковав все либы, может не все) и запустить в винде без всяких лишних телодвижений (иначе вин юзер не осилит)?

pavlick ★★
( 01.03.20 08:48:20 MSK ) автор топика
Последнее исправление: pavlick 01.03.20 08:50:11 MSK (всего исправлений: 2)

Ответ на: комментарий от pavlick 01.03.20 08:48:20 MSK

Теги — глянуть html исходник, да, тоже вариант.

pavlick ★★
( 01.03.20 08:52:06 MSK ) автор топика

На коленке делается двухмерный массив в консоли браузера:

(() => < const table = document.querySelector('.tab'); const rows = Array.from(table.rows); const loneChild = row =>row.cells.length < 2; const grabCells = row =>Array.from(row.cells).map(cell => cell.textContent); const concatPayload = row => loneChild(row) ? [] : [grabCells(row)]; return rows.reduce((rows, row) => rows.concat(concatPayload(row)), []) >)() 

Правый клик по вернувшемуся значению, «Copy object», и в буфере оказывается это:

[ [ "1", "abide [əˈbʌɪd]", "abode [əˈbʌɪdɪd]abided [əˈbəʊd]", "abode [əˈbʌɪdɪd]abided [əˈbəʊd]", "обитать, пребывать" ], [ "2", "arise [əˈraɪz]", "arose [əˈroʊz]", "arisen [əˈrɪzn]", "подняться; возникнуть" ], [ "3", "awake [əˈwaɪk]", "awoke [əˈwoʊk]", "awaked [əˈwoʊkn]awoke ", "будить; проснуться" ], [ "4", "backbite [ˈbækbaɪt]", "backbitten [ˈbækbɪtən]", "backbitten [ˈbækbɪtən]", "клеветать" ], [ "5", "backslide [ˈbækslaɪd]", "backslid [bækˈslɪd]", "backslid [bækˈslɪd]", "отпадать" ], . ] 

Правда, я профукал ручные разрывы строки.

Princesska ★★★★
( 01.03.20 09:04:38 MSK )
Последнее исправление: Princesska 01.03.20 09:06:52 MSK (всего исправлений: 1)

Ответ на: комментарий от Princesska 01.03.20 09:04:38 MSK

Не знал, что так можно. На чём пишутся эти «макросы» (что за язык)?

pavlick ★★
( 01.03.20 09:15:23 MSK ) автор топика
Ответ на: комментарий от pavlick 01.03.20 09:15:23 MSK

Princesska ★★★★
( 01.03.20 09:15:45 MSK )
Ответ на: комментарий от Princesska 01.03.20 09:15:45 MSK
pavlick ★★
( 01.03.20 09:17:21 MSK ) автор топика
Ответ на: комментарий от pavlick 01.03.20 09:15:23 MSK

Ну, собственно, код, который ты пишешь в консоли в developer tools браузера выполняется в контексте странички как «родной». Можно делать так было испокон веков.
Раньше, еще когда девелопер тулзов не было встроенных, но были разрешены «скриптовые ссылки» — в адресной строке писалось нечто вроде javascript:var x=document.getElementById(. );;. ;. ;void(0); (код любой, это я для примера написал, на конце обязательно void(0); — скриптовая ссылка должна вернуть void или ВСЕ содержимое странички будет заменено на значение последнего выражения) и жался enter — все выполнялось. Были оч популярны «ссылки», заставляющие картинки на страничке по орбитам летать и тому подобные непотребства.

Про bash под оффтопом ничего не знаю, кроме cygwin и mingw =) Вообще, ИМХО, все это такое себе, как и wine. Винде виндузовое, пингвину пингвинячье.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *