Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
11 / 10 / 4
Регистрация: 08.03.2016
Сообщений: 333

Получить информацию из тега

28.07.2017, 19:11. Показов 6291. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Хочу получить информацию из тега (из онлайн страницы\или же скаченной).
Как этого можно добиться?
Пытался с помощью Grab, но что-то не получается (может я не так делаю что-то)
Можно примерами пожалуйста
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.07.2017, 19:11
Ответы с готовыми решениями:

Как получить содержимое тега span
url = input("Введите URL:") info = requests.get(url).text soup = BeautifulSoup(info, "lxml") block =...

BeautifulSoup Как получить текстовое содержимое тега 'span'
Задача - получить "Нужный текст" из всех тегов <span class="value">Нужный текст</span> Получить теги вместе с содержимым просто - ...

Смогу ли я получить доступ к переменной данного тега из другого тега script?
если я в одном теге script объявлю переменную с именем mymap,то смогу ли я получить доступ к этой переменной из другого тега script. ...

7
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
28.07.2017, 20:17
Цитата Сообщение от damirqa Посмотреть сообщение
Хочу получить информацию из тега (из онлайн страницы\или же скаченной)
скачЕнной — от слова скатить (с горы; скатить с горы файл - звучит?!); скачАнной — от слова скачать (загрузить).
Цитата Сообщение от damirqa Посмотреть сообщение
Как этого можно добиться?
Упорством в изучении документации.
Цитата Сообщение от damirqa Посмотреть сообщение
может я не так делаю что-то
Скорей всего, Ватсон. Больше деталей.
Цитата Сообщение от damirqa Посмотреть сообщение
Можно примерами пожалуйста
Ваш ход первый.
P.S. Ознакомьтесь с библиотеками lxml и bs4 (BeatifulSoup), grab уже немного неактуален.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
29.07.2017, 15:20
Наивное решение: регулярки.

Чуть получше библиотеки для парсинга, что предложили выше. Добавлю ещё htmldom

Добавлено через 2 минуты
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests
import htmldom
 
url = 'https://www.cyberforum.ru/python-network/thread2021885.html'
 
html = requests.get(url, headers={
    'User-Agent': 'Mozilla/5.0 (compatible; Googlebot/2.1; +[url]http://www.google.com/bot.html[/url])'
    }).text
 
dom = htmldom.HtmlDom().createDom(html)
print(dom.find('title').text())
print(dom.find('meta[name=description]').first().attr('content'))
0
11 / 10 / 4
Регистрация: 08.03.2016
Сообщений: 333
29.07.2017, 21:24  [ТС]
Garry Galler,

Python
1
2
3
4
5
from grab import Grab
 
g = Grab()
g.go('https://www.instagram.com/p/BXHn5XGHMBY/')
print('//div[@class="_ovg3g"]')
Добавлено через 28 минут
Рыжий Лис,

Python
1
2
dom = htmldom.HtmlDom().createDom(html)
AttributeError: module 'htmldom' has no attribute 'HtmlDom'
Пример из документации такой же

Добавлено через 26 минут
Решил попробовать счастья с BeautifulSoup, но даже установке ступор
Пользуюсь PyCharm, поставил на установке BeautifulSoup, качает третью версию - ошибка при установке. Погуглил. Надо установить BeautifulSoup4. Установил. Но в PyCharm все равно не видит, что установлен BeautifulSoup4. Как это исправить?
ЗЫ Я новичок в Python
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
29.07.2017, 22:33
Цитата Сообщение от damirqa Посмотреть сообщение
@class="_ovg3g"
Не нашел я на указанной странице элемента с таким классом.
Но если он там все-таки есть, то применять xpath нужно было так :
Python
1
2
3
print(g.tree.xpath('//div[@class="_ovg3g"]'))
# или так - из документации grab'а не совсем понятно как нужно и я им не пользуюсь
print(g.xpath('//div[@class="_ovg3g"]'))
Что в итоге должно быть в элементе - мне неизвестно, поэтому ничего полезного из такого вызова вы не получите.
Извлекают обычно или текст или значения атрибутов элемента. Но для этого xpath запрос должен быть более развернутым.

В lxml это работает точно также, тем более что Grab построен поверх lxml:
Python
1
2
3
resp = requests.get(url)  # еще одна полезная библиотека для http запросов.
tree = lxml.html.fromstring(resp.text)
html = tree.xpath('.//div[@class="_ovg3g"]')[0]   # в чистом lxml xpath возвращает список найденных элементов
0
11 / 10 / 4
Регистрация: 08.03.2016
Сообщений: 333
29.07.2017, 23:22  [ТС]
Garry Galler, все как-то не так, с ошибками. И указываются в библиотеках - ну ладно (мне бы разобраться с BeautifulSoup)
Я как понял используется регулярные выражения почти везде.
Но как должна выглядеть это строка в виде регулярного выражения?
HTML5
1
<meta property="og:image" content="https://scontent-arn2-1.cdninstagram.com/t51.2885-15/e35/20398694_145321242715635_4014865901370212352_n.jpg">
так?
Python
1
//meta[@property="og:image"\s@content="https://*.jpg"]
,
при этом мне нужно получить именно вот это ссылку (именно рядом с og:image)
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
30.07.2017, 00:47
Лучший ответ Сообщение было отмечено damirqa как решение

Решение

Цитата Сообщение от damirqa Посмотреть сообщение
Я как понял используется регулярные выражения почти везде.
Используется синтаксис языка запросов Xpath. Он не имеет никакого отношения к регуляркам.
Также можно использовать синтаксис css селекторов - он проще, но менее функционален.
Xpath для lxml с получением значения атрибута content:
Python
1
xpath('//meta[@property="og:image"]')[0].attrib.get('content')
Как это будет в grab или bs4 не знаю - у них какие-то свои методы для атрибутов. Смотрите документацию.

Добавлено через 14 минут
Кстати, в lxml работает и такая фича:

Python
1
2
3
4
5
6
7
import requests
import lxml.html
 
resp = requests.get('http://onedev.net/post/458')
tree = lxml.html.fromstring(resp.text)
content = tree.xpath('string(//meta[@name="keywords"]/@content)') 
print(content)
То есть извлекаем содержимое атрибута непосредственно через специальный Xpath метод string.
Кстати, по ссылке загляните - там как раз про xpath.

Добавлено через 29 минут
Для grab'а такой вариант тоже работает:
Python
1
2
3
4
5
6
7
g = Grab()
r = g.go('http://onedev.net/post/458')
content = r.tree.xpath('string(//meta[@name="keywords"]/@content)') 
print(content)
# или даже без string
content = r.tree.xpath('//meta[@name="keywords"]/@content')[0]  # тут будет список - поэтому берем первый элемент
print(content)
1
11 / 10 / 4
Регистрация: 08.03.2016
Сообщений: 333
30.07.2017, 09:55  [ТС]
Garry Galler, фича хорошая! Помогла, спасибо!
с крабом что-то не идет (ошибки, которые указываются в библиотеках)
c BeatifulSoup4 разобрался, нужно было подключать такimport bs4
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.07.2017, 09:55
Помогаю со студенческими работами здесь

Не принимает информацию из html. Можно ли загружать в php из тега <p>?
кусочек моей формы: &lt;form&gt; ... &lt;div class=&quot;date_order_b &quot;&gt; &lt;button class=&quot;btn btn-success&quot; name=&quot;dobzakaz&quot;...

Парсинг XML, как взять информацию только из-под одного тега?
Подскажите. Есть xml файл, как взять данные равные 11? У меня выводится как 9 так и 11. &lt;first&gt; ...

Получить информацию об оперативной памяти и информацию об одном из жёстких дисков
Как с помощью функций WinAPI определить информацию об оперативной памяти и информацию о памяти на одном из жёстких дисков. Заранее...

Получить содержимое тега h1
Привет. Я считываю html-файл в переменную:$page = file_get_contents('имя_файла'); Как получить в переменную содержимое тега h1...

Получить название тега
Настраиваю я работу одной страницы и выясняю, что мой код работает не правильно. Для выяснения сути нужно понимать какой именно объект у...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru