Verwenden von Scrapy, um die asp.net-Website mit Javascript-Schaltflächen und Ajax-Anforderungen zu scrappen

Ich habe versucht, ein Datum von der asp.net-Website zu entfernen. Die Startseite sollte die folgende sein:http://www.e3050.com/Items.aspx?cat=SON

Erstens möchte ich 50 Elemente pro Seite anzeigen (aus dem ausgewählten Element). Zweitens möchte ich durch die Seiten paginieren.

Ich habe den folgenden Code für 50 Artikel pro Seite ausprobiert, aber nicht funktioniert:

<code>start_urls = ["http://www.e3050.com/Items.aspx?cat=SON"]    
def parse(self, response):
        requests = []
        hxs = HtmlXPathSelector(response)

        # Check if there's more than 1 page         
        if len(hxs.select('//span[@id="ctl00_ctl00_ContentPlaceHolder1_ItemListPlaceHolder_lbl_PageSize"]/text()').extract()) > 0:
            # Get last page number
            last_page = hxs.select('//span[@id="ctl00_ctl00_ContentPlaceHolder1_ItemListPlaceHolder_lbl_PageSize"]/text()').extract()[0]
            i = 1

            # preparing requests for each page
            while i < (int(last_page) / 5)  + 1:
                requests.append(Request("http://www.e3050.com/Items.aspx?cat=SON", callback=self.parse_product))
                i +=1 

            # posting form date (50 items and next page button)
            requests.append(FormRequest.from_response(
                    response,
                    formdata={'ctl00$ctl00$ContentPlaceHolder1$ItemListPlaceHolder$pagesddl':'50',
                              '__EVENTTARGET':'ctl00$ctl00$ContentPlaceHolder1$ItemListPlaceHolder$pager1$ctl00$ctl01'},
                    callback=self.parse_product,
                    dont_click=True
                )
            )

            for request in requests:
                yield request
</code>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage