Редактировать:
Мне удалось добиться некоторого прогресса с помощью Scare FormRequest, и теперь я пытаюсь понять, как перебирать все страницы.К сожалению, следующий код возвращает только содержимое страницы 209:
for i in range (1, 210):
formdata = {'pageNumber': str(i)}
def parse(self, response):
return scrapy.FormRequest.from_response(
response, formdata=self.formdata, callback=self.after_post)
def after_post(self, response):
for link in response.css('div.AL'):
yield{
'link': link.css('div.AL').extract()
}
Похоже, что цикл запускает его до того, как произойдет часть 'def parse (self, response)' (т.е. я запускаюдо 209, прежде чем двигаться дальше).Любая идея о том, как структурировать итерацию и получить эту работу, будет высоко оценена.Спасибо.
Исходное сообщение:
Я пытаюсь сканировать веб-сайт с помощью Scrapy, но застрял, поскольку страница отображает данные внутри формы и использует JavaScript для разбиения на страницы.
Это HTML-часть нумерации страниц:
<div id="dvPager" class="AList-GridPagingArea">
<div class="seperator20"></div>
<div class="AList-GridPageStart" id="pagerFirst">First</div>
<div class="AList-GridPagePrev" id="pagerPrevious">Previous</div>
<div class="AList-GridPageCurrent">Page 1 of 211</div>
<div class="AList-GridPageNext" id="pagerNext">Next</div>
<div class="AList-GridPageEnd" id="pagerLast">Last</div>
<div class="seperator20"></div>
</div>
<input data-val="true" data-val-number="The field PageNumber must be a
number." data-val-required="The PageNumber field is required."
id="pageNumber" name="pageNumber" type="hidden" value="1" />
А вот соответствующий javascript:
<script type="text/javascript">
$(document).ready(function() {
$("#pagerFirst").bind('click', function(){GoToPage(1)});
$("#pagerPrevious").bind('click', function(){GoToPage(1)});
$("#pagerNext").bind('click', function(){GoToPage(2)});
$("#pagerLast").bind('click', function(){GoToPage(211)});
$('#pagerFirst, #pagerPrevious, #pagerNext, #pagerLast').hover(function() {
$(this).css('cursor','pointer');
});
if(1 == 1 || 211 == 0){
$("#pagerFirst").unbind('click');
$('#pagerFirst').hover(function() {
$(this).css('cursor','default');
});
}
if(1 == 1 || 211 == 0) {
$("#pagerPrevious").unbind('click');
$('#pagerPrevious').hover(function() {
$(this).css('cursor','default');
});
}
if(1 == 211 || 211 == 0) {
$("#pagerNext").unbind('click');
$('#pagerNext').hover(function() {
$(this).css('cursor','default');
});
}
if(1 == 211 || 211 == 0) {
$("#pagerLast").unbind('click');
$('#pagerLast').hover(function() {
$(this).css('cursor','default');
});
}
});
function GoToPage(page) {
$("#pageNumber").val(page);
CollectAuctionObjectsFilters();
$("#dvPager").parent("form").submit();
}
</script>
Было бы здорово, если бы кто-то мог указать мнев правильном направлении о том, как подойти к этому.Спасибо.