Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Парсинг страницы: что за два разных кода? [RSS Feed]

#1 Фев. 28, 2012 02:00:46

Jazzis
От:
Зарегистрирован: 2011-08-17
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг страницы: что за два разных кода?

Для написания одной программки нужно пропарсить страницу сайта с выводом нужного элемента. Порыскав в инете, нашел вполне подходящий мне пример, немного его изменил, но возникла загвоздка: не могу понять, чтобы получить xpath или css-путь к нужному элементу (тэгу) использую утилиту Firebug для Firefox, но код который выдает Firebug (при просмотре всей страницы) значительно отличается от кода, который выдается, если нажать ПКМ по странице и выбрать “Исходный код страницы”. И поэтому когда я пытаюсь получить содержимое нужного элемента, то скрипт ничего не выдает. Следовательно возникает вопрос: что это за коды такие, которые отличаются?

import lxml.html
import urllib

page = urllib.urlopen('http://www.site.com')
doc = lxml.html.document_fromstring(page.read())

search = '/html/body'

for track in doc.xpath(search):
print track.text
www.site.com - к примеру написан, если нужно, то напишу тот который парсю..



Отредактировано (Фев. 28, 2012 02:07:44)

Офлайн

#2 Фев. 28, 2012 04:33:09

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Парсинг страницы: что за два разных кода?

“Исходный код страницы” показывает то, что браузер получил от сервера. Firebug показывает то дерево, что в итоге отображено. При этом исходный код мог содержать ошибки и браузер их интерпретирует по своему. Плюс часть элементов может генерироваться/преобразовываться скриптами. Давайте уже урл и путь к элементу.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Фев. 28, 2012 04:45:10

Jazzis
От:
Зарегистрирован: 2011-08-17
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг страницы: что за два разных кода?

Тада page и search будут выглядеть так.

page = urllib.urlopen('http://www.grind.fm/radio')
...
search = '/html/body/div[3]/div/div/div/div[2]/div/div/div[4]/div/table/tbody/tr[2]/th[2]'
путь к элементу выдран с помощью Firebug



Отредактировано (Фев. 28, 2012 04:46:45)

Офлайн

#4 Фев. 28, 2012 06:21:00

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Парсинг страницы: что за два разных кода?

Ну дык там таблица через javascript с урла http://www.grind.fm/sites/grind.fm/counter/meta2.php подгружается, его и стоит парсить - обрезать начало и конец и будет чистый JSON



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Фев. 29, 2012 15:31:15

Jazzis
От:
Зарегистрирован: 2011-08-17
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг страницы: что за два разных кода?

PooH, спасибо, дальше работа закипела и ток щас отписываюсь)) и вопросец волнует, как вы узнали этот урл?



Отредактировано (Фев. 29, 2012 15:33:06)

Офлайн

#6 Март 1, 2012 03:58:27

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Парсинг страницы: что за два разных кода?

Jazzis
и вопросец волнует, как вы узнали этот урл?
Javascript на странице почитал. Можно было еще запросы в Firebug, на вкладке Сеть посмотреть.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

  • Начало
  • » Web
  • » Парсинг страницы: что за два разных кода?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version