Я написал паука, который также должен переходить по ссылкам на нумерацию страниц, однако, когда я передаю данные формы с номером страницы (какой бы номер страницы я ни пропустил), я получаю только первую страницу. Я также попытался передать все данные формы и заголовки запросов в Postman, но безуспешно.
Я просто хотел бы знать, как получить указанный номер страницы после того, как цикл по нескольким страницам не будет проблемой.
Также в целях тестирования я пытался включить и исключить различные параметры при отправке запроса в режиме «почтальон и скрап».
def start_requests(self):
url="http://www.1ropani.com/House.aspx"
payload={"ContentPlaceHolder1_HouseListControl1_GridView1":"Page$2",
"ctl00$ContentPlaceHolder1$HouseListControl1$ItemsPerPageDropDownList":"100",
"__VIEWSTATEGENERATOR":"BBBC20B8",
"ctl00$ContentPlaceHolder1$HouseListControl1$BuyRentDropDownList":"On Sale only",
"ctl00$ContentPlaceHolder1$HouseListControl1$PriceRangeDropDownList":"Any Price",
"ctl00$ContentPlaceHolder1$HouseListControl1$LandareaDropDownList":"Any Area",
"ctl00$ContentPlaceHolder1$HouseListControl1$ItemsPerPageDropDownList":"100",
"ctl00$ContentPlaceHolder1$HouseListControl1$SortByDropDownList: Date":"Newest on top",
"__ASYNCPOST":"true"
}
# payload={
# "ctl00$ContentPlaceHolder1$HouseListControl1$ItemsPerPageDropDownList":"100",
# "__EVENTARGUMENT":"Page$5"}
# head={"referer":"http://www.1ropani.com/Search.aspx?tt=buy&",
# "Cookie":"__utma=202999825.102474612.1543209861.1543209861.1543209861.1; __utmz=202999825.1543209861.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); realtabs=0; ASP.NET_SessionId=5zz5gbs2exlm3n1bcvrrhbup; undefined=25",
# "Host":"www.1ropani.com",
# "Accept":"*/*",
# "Accept-Encoding":"gzip, deflate",
# "Cache-Control":"no-cache",
# "Connection":"keep-alive",
# # "Content-Length":"3882",
# "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
# "Origin":"http://www.1ropani.com",
# "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36",
# "X-MicrosoftAjax":"Delta=true",
# "X-Requested-With":"XMLHttpRequest"}
head={"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
"Accept-Encoding":"gzip, deflate",
"Accept-Language":"en-US,en;q=0.9,ne;q=0.8",
"Connection":"keep-alive",
#"Cookie":"__utma=202999825.102474612.1543209861.1543209861.1543209861.1; __utmz=202999825.1543209861.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); realtabs=0; ASP.NET_SessionId=5zz5gbs2exlm3n1bcvrrhbup; RecentlyViewed=7511,7496,7510,5555,5556,5557,5558; undefined=14",
"Host":"www.1ropani.com",
"Referer":"http://www.1ropani.com/House.aspx",
"Upgrade-Insecure-Requests":"1",
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"}
yield FormRequest(url=url,method='POST',headers=head,formdata=payload, callback=self.parse)
def parse(self, response):
properties= response.xpath('//div[@class="search_result"]/descendant::div[@class="search_result_list"]')
for property in properties:
link=property.xpath('./a/@href').extract_first()
url=response.urljoin(link)
yield Request(url, callback=self.parse_property, meta={'URL':url},dont_filter=False)
def parse_property(self, response):
l = ItemLoader(item=NPMItem(), response=response)
URL=response.meta.get('URL')
l.add_value('URL',response.url)
yield l.load_item()
'''