Взять html из web-страницы, загружаемой по javascript-запросу

Столкнулся со следующей задачей. Имеется web-страница c известным url, с которой забирается html. С этой страницы можно перейти на другие, следующие за ней страницы (2, 3, 4...), переход на которые осуществляется при помощи следующей функции

function goto_page(pnum){
    var frm = document.forms["results"];
    frm.pagenum.value=pnum;
    frm.action="author_items.asp";
    frm.target="";
    frm.submit()
}

и соответственно ведет на http://elibrary.ru/author_items.asp, содержание которого меняется при изменении выбранного номера страницы.

Сам просмотр осуществляю при помощи Qt:

import sys  
from PyQt4.QtGui import *  
from PyQt4.QtCore import *  
from PyQt4.QtWebKit import *  

class Render(QWebPage):  
  def __init__(self, url):  
    self.app = QApplication(sys.argv)  
    QWebPage.__init__(self)  
    self.loadFinished.connect(self._loadFinished)  
    self.mainFrame().load(QUrl(url))
    self.app.exec_()  
  
  def _loadFinished(self, result):  
    self.frame = self.mainFrame()  
    self.app.quit()  
 
url = 'http://elibrary.ru/author_items.asp?authorid=xxxxx'  
r = Render(url)


Вопрос: как при помощи python осуществлять переход на нужный номер страницы и забирать html?
  • Вопрос задан
  • 4145 просмотров
Решения вопроса 1
KEKSOV
@KEKSOV
1. Найти на HTML странице форму «results», понять какой у нее тип — POST или GET
2. Узнать какие еще поля, кроме pagenum в ней есть. Если больше ничего нет, что отлично, если есть, то необходимо узнать значения, которые в них записаны (у приложения может быть сложная логика, скажем, в одном из полей прописан код сессии, код пользователя и т.п. ) Кроме формы, приложение может отправлять на сервер какие-то данные через куки, за ними тоже надо проследить в инспекторе сетевой активности браузера (кнопка F12 в Хроме, вкладка Network)
3. Когда все параметры запроса будут известны, делаем аналогичный запрос на Python и получаем нужную страницу.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
vvpoloskin
@vvpoloskin
Инженер связи
Видимо, на странице HTML-форма, при подтверждении которой происходит действие. А так как вы это визуально не обнаружили, то скорее всего это POST-метод. Смотрим файрбагом какие параметры, каким способом и куда передаются, и делаем на питоне POST или GET с такими же параметрами.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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