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

Метод get_text()

16.04.2020, 09:33. Показов 8954. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день всем.
Пытаюсь заниматься парсингом, документацию прочитал, но всё равно не совсем понимаю.

Сперва нахожу один блок, затем в нем нахожу другой т.е. спускаюсь по дереву вниз, далее нахожу следующий. И вот в этом блоке есть класс называется он "c-events__liga".
Когда вывожу на экран получаю вот в таком формате
Кликните здесь для просмотра всего текста
[<span class="c-events__liga">
Мастерс </span>, <span class="c-events__liga">
BoomCup </span>, <span class="c-events__liga">
Вин Кап </span>, <span class="c-events__liga">
Сетка Кап </span>, <span class="c-events__liga">
Сетка Кап. Женщины </span>, <span class="c-events__liga">
Лига Про </span>, <span class="c-events__liga">
Корона Хоум Кап </span>, <span class="c-events__liga">
Чемпионат Армении. ИТТ Кап. Группа А. Женщины </span>, <span class="c-events__liga">
Чемпионат Армении. ИТТ Кап. Группа Б. Женщины </span>, <span class="c-events__liga">
Чехия. ТТ Стар Серия </span>]


Пытаюсь получить текст оттуда, но не совсем получается.
По документации написано
soup.ТЭГ.get_text()

Когда я так делаю он у меня на странице любой тег берёт этот и текст из него, а мне вот конкретно нужен из этого класса текст, т.е конкретно "Мастерс" и "BoomCup".
подскажите пожалуйста.

Вот мой код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
url = "https://1xbet.kz/live/Table-Tennis/"
 
source = requests.get(url)
html = source.text
soup = BeautifulSoup(html, "html.parser")
table = soup.find_all("div", class_="sports_widget")
 
for i in table:
    c = soup.find_all("div", class_="c-events__name")
    for i in c:
        league = soup.find_all("span", class_="c-events__liga")
    print(league)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.04.2020, 09:33
Ответы с готовыми решениями:

Получаю ошибку "AttributeError: 'NoneType' object has no attribute 'get_text'" хотя в коде тег и класс указаны правильно
я работаю над парсингом сайта, использую библиотеку(BS4). ПРОБЛЕМА - мне нужно спарсить параметр с карточкой цены. как только я прописал...

AttributeError: 'NoneType' object has no attribute 'get_text'
При поиске класса консоль ругается на print(container.get_text()) и выдает ошибку AttributeError: 'NoneType' object has no attribute...

Ошибка парсера AttributeError: 'NoneType' object has no attribute 'get_text'
Хочу получить имена криптовалют на первой странице, выводит только первые десять, а потом ошибка. from bs4 import BeautifulSoup as Bs ...

12
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
16.04.2020, 09:54
Вы не спускаетесь по дереву, вы продолжаете искать на всей странице


Python
1
2
3
4
5
for i in table:
    divs = i.find_all("div", class_="c-events__name")
    for div in divs:
        league = div.find_all("span", class_="c-events__liga")
    print(league)
1
0 / 0 / 0
Регистрация: 13.03.2020
Сообщений: 32
16.04.2020, 10:48  [ТС]
а как спускаться вниз?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
16.04.2020, 13:09
Цитата Сообщение от naopite Посмотреть сообщение
а как спускаться вниз?
Тебе пример выше привели.

А еще лучше - использовать XPATH.

Python
1
2
3
>>> root.xpath('//span[@class="c-events__liga"]/text()')
['\nМастерс ', '\nBoomCup ', '\nВин Кап ', '\nСетка Кап ', '\nСетка Кап. Женщины ', '\nЛига Про ', '\nКорона Хоум Кап ', '\nЧемпионат Армении. ИТТ Кап. Группа А. Женщины ', '\nЧемпионат Армении. ИТТ Кап. Группа Б. Женщины ', '\nЧехия. ТТ Стар Серия ']
>>>
Круто, да? Бесполезная BS4 так не умеет. Любой путь можно описать одной строкой.
0
0 / 0 / 0
Регистрация: 13.03.2020
Сообщений: 32
17.04.2020, 07:48  [ТС]
почему бесполезная?)
т.е. для парсинга не обязательно bs4 использовать?
можешь что получше предложить? я просто смотрел, все через эту шляпу делают.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
17.04.2020, 08:09
Python
1
2
3
4
5
6
7
8
9
10
from bs4 import BeautifulSoup
import requests
 
url = "https://1xbet.kz/live/Table-Tennis/"
 
source = requests.get(url)
 
soup = BeautifulSoup(source.content, "html.parser")
spans = soup.select("span.c-events__liga")
print(*(x.text.strip() for x in spans), sep="\n")
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
17.04.2020, 13:18
Цитата Сообщение от naopite Посмотреть сообщение
все через эту шляпу делают.
Не все. Только на видеоуроках для нубов и от нубов.

А также те, кто не знает про XPATH.
А кто знает - использует lxml.

Добавлено через 1 минуту
Python
1
2
3
4
import lxml.html
 
root = lxml.html.fromstring(html)
root.xpath('//span[@class="c-events__liga"]/text()')
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
17.04.2020, 15:24
Цитата Сообщение от Garry Galler Посмотреть сообщение
Только на видеоуроках для нубов и от нубов.

Не по теме:

Мастер манипуляций.

0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
17.04.2020, 15:51
Jabbson,
? lxml объективно функциональнее.
Если заглянуть в ее документацию глубже базового метода fromstring, то там обнаруживается еще сотня полезных функций для работы с html, чего нет в bs4.
Конечно, XPATH можно заменять CSS select-ом (что есть и в lxml), но в XPATH спецификации есть функции, а синтаксис CSS селекторов это только выражения ( к тому же расширенный JQuery CSS синтаксис поддерживается только специализированными либами типа pyquery).
bs4 объективно полезна только в одном: замена бэкендов. В остальном она в силу своего синтаксиса направляет пользователей по пути неправильного построения запросов, что можно видеть во всех кодах новичков, которые юзают длинные цепочки запросов вместо возможного одного правильно построенного XPATH. При этом они практически поголовно не проверяют возвращаемые значения из этих цепочек и потом сорят на форуме вопросами "NoneType не имеет такого то атрибута".

И как вы думаете откуда они берут такие паттерны программирования? Из видеоуроков таких же как они "авито парсильщиков".

Не успел написать как вот, cвежий пример: 'NoneType' object has no attribute 'text'
0
0 / 0 / 0
Регистрация: 13.03.2020
Сообщений: 32
17.04.2020, 19:26  [ТС]
ты прям четко всё описал) авито парсильщики мы все по видео урокам, по документации не особо понятно. может литературу какую посоветуешь пожалуйста? прям вот чтоб хорошо шло...
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
17.04.2020, 19:58
Литературы такой на русском я не знаю.
Но для грамотного парсинга нужно знать синтаксис CSS селекторов и XPATH запросов.
Из статей - вот:
CSS селекторы (поддерживают и bs4 и lxml)
https://puzzleweb.ru/css/selectors.php
XPATH (только lxml)
https://soltau.ru/index.php/themes/dev/item/413

Главный плюс этих синтаксич. выражений в том, что можно описать свой запрос к дереву элементов максимально компактно.
1
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
19.04.2020, 14:46
а ещё lxml написан на C, по сути.
И по всем бэнчмаркам lxml превосходит bs4
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
19.04.2020, 19:25

Не по теме:

Тротиловая шашка по всем параметрам, наверное, тоже превосходит мухобойку, но иногда нужно просто убить комара.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2020, 19:25
Помогаю со студенческими работами здесь

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++

Хеш-функция – метод перевода в другую систему счисления, метод разрешения коллизий – метод цепочек
Перевод из одной системы счисления в другую сделал, но очень плохо понимаю как сделать метод цепочек. Подскажите пожалуйста. #include...

Написать три алгоритма решения СЛАУ: Метод прогонки, метод квадратных корней, метод вращений
Начал писать курсовую. Нужно написать три алгоритма решения СЛАУ: прогонки, квадратных корней, вращений. С методом прогонки более менее...

Минимизация в excel разными методами (метод перебора, дихотомия, метод Ньютона, метод касательных)
Минимизация в excel разными методами (метод перебора, дихотомия, метод Ньютона, метод касательных) как в примере (вложения) только с...

Метод медиан из трех элементов VS улучшенный быстрый метод сортировки(метод Бентли-Макилроя)
Здравствуйте! Дали весьма интересное задание. Сравнить два вышеуказанных метода сортировки для массива из 10000 элементов, результаты...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru