Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 28

Вывод фрагментов из HTML документа

24.05.2019, 00:03. Показов 2982. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Столкнулся с такой ситуацией что нужно вывести из HTML документа в отдельный файл текст, но не знаю как это сделать в силу своей неграмотности в сфере программирования.
Перерыв множество сайтов понял что это можно сделать с помощью JS, Python, C# и регулярных выражений.
хотел бы узнать как это можно осуществить через python и можно ли сохранять вырезанный фрагмент в excel файле.
к примеру есть такой фрагмент из которого нужно вырезать ID предмета в данном случае это "23068" и ссылку https://steamcommunity.com/mar... eld-Tested)

HTML5
1
2
3
4
<tr data-item-id="23068" data-pos="5633">
<td class="copy-name" title="Скопировать">SSG 08 | Hand Brake (Field-Tested)</td>
<td class="field-link hide hide-in-table" data-link-key="opskins"></td>
<td class="field-link" data-link-key="steamcommunity"><a href="https://steamcommunity.com/market/listings/730/SSG%2008%20%7C%20Hand%20Brake%20(Field-Tested)" target="_blank">
если есть какие либо краткие обучающие курсы именно в данной сфере скиньте ссылку
Заранее благодарен.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.05.2019, 00:03
Ответы с готовыми решениями:

Вывод всего html документа
Здравствуйте! Как вывести весь html документ в ячейку таблицы без использования: - php и его друзей (perl и других языков которые...

Вывод документа html на печать
Всем доброго времени суток! Есть файл-отчет html. И принтер SPR-350(кассовый). Вывожу отчет на печать след. методом: var...

Вывод чисел при запуске документа html
Помогите сделать вывод уравнения в первый &lt;div&gt; Вместо уравнения оно выводит &quot;undefined&quot;. За его вывод отвечает функция...

3
 Аватар для Vigi
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
24.05.2019, 11:23
Лучший ответ Сообщение было отмечено Freerun как решение

Решение

можно так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
from bs4 import BeautifulSoup as bs
 
html = '''
    <tr data-item-id="23068" data-pos="5633">
    <td class="copy-name" title="Скопировать">SSG 08 | Hand Brake (Field-Tested)</td>
    <td class="field-link hide hide-in-table" data-link-key="opskins"></td>
    <td class="field-link" data-link-key="steamcommunity"><a href="https://steamcommunity.com/market/listings/730/SSG%2008%20%7C%20Hand%20Brake%20(Field-Tested)" target="_blank">
'''
 
id_ = bs(html, 'html.parser').find('tr')['data-item-id']
url = bs(html, 'html.parser').find_all('td', {'class': 'field-link'})[-1].a['href']
print(id_, url, sep='\n')
2
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 28
24.05.2019, 18:30  [ТС]
Vigi, Спасибо, попробую разобраться в коде )))

Добавлено через 5 часов 52 минуты
Vigi, хотел немного переделать код, но что то пошло не так D
в планах было сделать так что бы из 3 ссылок туда добавилась только от "steamcommunity" (вроде как получилось это сделать заменив в квадратных скобках значение с "-1" на "-3", но не знаю правильно ли это) и добавить туда еще среднюю цену (AVG) по рублям.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from bs4 import BeautifulSoup as bs
 
html = '''
<tr data-item-id="8441" data-pos="1785">
    <td class="copy-name" title="Скопировать">MAC-10 | Oceanic (Field-Tested)</td>
    <td class="field-link hide hide-in-table" data-link-key="opskins"></td>
    <td class="field-link" data-link-key="steamcommunity">
        <a href="https://steamcommunity.com/market/listings/730/MAC-10%20%7C%20Oceanic%20(Field-Tested)" target="_blank"></td>
    <td class="field-link hide" data-link-key="bitskins">
        <a href="https://bitskins.com/?appid=730&amp;market_hash_name=MAC-10%20%7C%20Oceanic&amp;item_wear=Field-Tested&amp;is_stattrak=-1&amp;sort_by=price&amp;order=asc&amp;ref_alias=csgoback" target="_blank">
            <div class="column-title">min</div><div>0.02$</div></span><span class="column-delimiter">|</span><span>
            <div class="column-title">avg</div><div>0.05$</div></span><span class="column-delimiter">|</span><span>
            <div class="column-title">max</div><div>0.07$</div></span></div><p class="last-sales-row"><span>0.05$</span>
    </td>
    <td class="field-link" data-link-key="tm">
        <a href="https://market.csgo.com/?s=price&amp;search=MAC-10%20%7C%20Oceanic&amp;q=Field-Tested%2C%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%20%D0%BF%D0%BE%D0%BB%D0%B5%D0%B2%D1%8B%D1%85%20%D0%B8%D1%81%D0%BF%D1%8B%D1%82%D0%B0%D0%BD%D0%B8%D0%B9&amp;h=%D0%9E%D0%B1%D1%8B%D1%87." target="_blank">
            <div class="column-title">min</div><div>3.56₽</div></span><span class="column-delimiter">|</span><span>
            <div class="column-title">avg</div><div>9.22₽</div></span><span class="column-delimiter">|</span><span>
            <div class="column-title">max</div><div>30₽</div></span></div><p class="last-sales-row"><span>16.89₽</span>
    </td>
</tr>
    '''
id_ = bs(html, 'html.parser').find('tr')['data-item-id']
url = bs(html, 'html.parser').find_all('td', {'class': 'field-link'})[-3].a['href']
div = bs(html, 'html.parser').find_all('td', {'class': 'column-title'})[0].a['avg']
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
24.05.2019, 20:59
Цитата Сообщение от Freerun Посмотреть сообщение
bs(html, 'html.parser')
bs(html, 'html.parser')
bs(html, 'html.parser')
Зачем каждый раз заново парсить всю страницу? Сохраняйте результат в переменной и потом применяйте к ней методы.
'column-title' не является классом для td - это ваша ошибка.
Не пишите сразу все действия в одну строку: а если на странице не окажется таблицы с элементами td? Ваш код упадет.
А если у td изменится класс?
Ваш код упадет.
А если у элемента a не окажется атрибута href?
Ваш код упадет.
Эх раз, еще раз, еще много много много раз....

Учитесь проверять результаты, которые возвращает функция или метод.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.05.2019, 20:59
Помогаю со студенческими работами здесь

Не верный вывод html документа после запроса
Здравствуйте, возникла проблема с выводом содержимого html документа. В первом проекте написал классы, отсылающие запрос и получающий ответ...

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

Как отключить вывод адреса при печати html документа методом ExecWB()?
Вечер добрый! Такая проблем - при печати хтмл - документа методом ExecWB() внизу выводится его адрес, как это можно отключить? Это...

Google apps script. Некорректный перенос фрагментов документа в другой документ
Здравствуйте. Надеюсь, что выбрал правильный раздел. GAS - это же расширение javascript. Значит, по идее, сюда. Передо мной стоит такая...

Поиск фрагментов html
здравствуйте, как в поиске вводить в коде, найти: --&gt;&lt;/ span&gt; &lt;!-- я пробовал так &quot;--/ spanChr(13)Chr(13)!--&quot; - не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru