Каким образом с помощью python получить полную страницу вконтакте?

Каким образом получить код страницы ВКонтакте (мобильная версия) в python?
Например, если я просто сделаю это как-то так:
...
def download_page(self, url):
        opener = urllib2.build_opener()
        opener.addheaders = [('Cookie', self._cookie),
                             ('User-Agent', self._user_agent),
                             ('Accept-Charset', 'utf-8')]
        page = opener.open(url)
        page_string = page.read().decode('utf-8')

url = "https://m.vk.com/id1?z=photo1_326502705%2Fphotos1"
print blabla.download_page(url)
...

То не получу полный код страницы. Судя по всему, это из-за AJAX. То есть, вопрос сводится к тому, каким образом можно делать AJAX реквесты (я не знаю, как это сформулировать правильно :( ) при помощи python.
  • Вопрос задан
  • 3337 просмотров
Решения вопроса 2
vvpoloskin
@vvpoloskin
Инженер связи
Ajax запрос - XMLHttpRequest, его же можно создать на python'е. Cookies тоже можно в него добавить все необходимые. Сформировать GET или POST тоже можно.
Ответ написан
@maxfox
Поставьте любой сниффер, Fiddler или Wireshark. Скролльте страницу и смотрите запросы.
Для стены vk делает POST запрос на https://vk.com/al_wall.php c параметрами:
act = get_wall
al = 1
offset = 10
owner_id = 1
type = own
Где owner_id - id пользователя, а offset - смещение относительно последнего сообщения.

Я с парсингом vk с свое время долго провозился, но это по неопытности. В конечном итоге там для любых данных кода выйдет от силы на страницу, так что дерзайте.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Может вы и не знали, но AJAX запрос это обычный HTTP запрос, и в контексте задачи вам нужно сформировать корректные заголовки, что если честно, проблемно, учитывая механизмы аунтефикации/авторизации вконтакта (хотя может там все проще чем я думаю).

А почему бы не использовать API вконтакта и не работать напрямую с данными, минуя процесс тупого парсинга html (как я понимаю все ради этого и делается).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы