Найти - Пользователи
Полная версия: Python + Grab
Начало » Web » Python + Grab
1
chuffey
Доброго времени суток, прошу помощи, пытаюсь парсить страницу
http://kinomax.ru/kirov/schedule.htm
но вот проблема, при парсинге не видит дальше
<div id="mp-films-schedule-list"
не знаю что делать пытался и сохранять страницу и т.п. ничего не помогает.
парсю так
from grab import Grab
g1 = Grab()
g1.go('http://kinomax.ru/kirov/schedule.htm')
print g1.xpath_text('//div[@id="mp-films-schedule-list"]')
ничего не пишет

при попытке указать слегдующий тег на странице выдает ошибку что не найден xpath_text

p.s. точнее до div доходит но он пустой, пробовал парсить и через Beautiful Soup таже проблема
p.p.s Заранее спасибо
plusplus
chuffey
p.s. точнее до div доходит но он пустой

Ну дак потому что он пустой :)
<div id="mp-films-schedule-list" class=""></div>
chuffey
В том и проблема , что страница не прогружается полностью. А если открыть в браузере то видно на прикрепленной картинке что он далеко не пустой.
(прошу прощения возможно привел не тот адрес страницы)
http://kinomax.ru/kirov/
если посмотреть через FireBug то видно что данный Div далеко не пустой и содержит в себе все расписание сеансов кинотеатра, но до него никак не могу добраться ( Grab без проблем парсит предыдущие 2 DIV
<div class="filmheader">...</div>
<div class="tabs clearboth">...</div>
без понятия в чем может быть проблема
Lexander
chuffey
Этот div пустой при загрузке страницы.
Потом в него подгружается расписание, например, через ajax.
Вам нужно парсить уже после подгрузки данных расписания.
Lexander
Попробуйте в качестве транспорта для Grab использовать selenium.
Или, если вам нужен только этот кусочек страницы - расписание,- найдите ajax-запрос на странице и шлите прямые запросы по используемому ajax-запросом адресу.
chuffey
Не могу воспользоваться GrabSelenium, на вики написано пользоваться так
from grab import GrabSelenium
g = GrabSelenium()
g.go('http://ixbt.com')
print g.xpath_text('//title')
такого нет, пошарив по папкам внутри grab нашел transport.selenium
сделал так
from grab.transport.selenium import GrabSelenium
g = GrabSelenium()
g.go('http://kinomax.ru/kirov/')
выдает ошибку:
C:\Python27\python.exe C:/Python27/Lib/site-packages/grab-0.4.8-py2.7.egg/grab/transport/selenium.py
Traceback (most recent call last):
  File "C:/Python27/Lib/site-packages/grab-0.4.8-py2.7.egg/grab/transport/selenium.py", line 7, in <module>
    import urllib
  File "C:\Python27\Lib\site-packages\grab-0.4.8-py2.7.egg\grab\transport\urllib.py", line 9, in <module>
    import urllib2
  File "C:\Python27\lib\urllib2.py", line 112, in <module>
    from urllib import (unwrap, unquote, splittype, splithost, quote,
ImportError: cannot import name unwrap
Process finished with exit code 1
как я понимаю ошибка импорта, но библиотека urllib2 стандартная => ошибка где то у меня, но хз где она, Help…
А насчет ajax - запроса ничего для себя внятного не нашел ( да и надо не только расписание а желательно всю страницу иметь под рукой )
plusplus
http://kinomax.ru/index2.php?r=schedule%2Fcinema&id=kirov
chuffey
plusplus
http://kinomax.ru/index2.php?r=schedule%2Fcinema&id=kirov
огромное спасибо, а еще всеравно расскажите как найти подобное на странице?
plusplus

chuffey
Снифером. Я пользовался плагином httpfox для firefox, просто просмотрел все запросы и нашел нужный. Вроде и в firebug-е чето подобное есть.
lorien
В хроме есть встроенный сниффер: заходим на нужную страницу, далее жмём Ctrl + J, далее переходим на вкладку network, далее перезагружаем страницу и видим все сделанные браузером сетевые запросы.

Честно говоря, я не знаю, насколько хорошо работает Grab-транспорт для selenium. Вот этот человек пилит потихоньку транспорт для selenium https://bitbucket.org/Deadly0 - вопросы к нему лучше адресовать по этому транспорту.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB