Wie verwende ich Scrapy, um Daten von mehreren Seiten zu crawlen, die von Javascript implementiert werden?

Ich möchte Scrapy verwenden, um Daten von Webseiten zu crawlen, aber der Unterschied zwischen verschiedenen Seiten ist in der URL nicht zu sehen. Zum Beispiel:

http: //epgd.biosino.org/EPGD/search/textsearch.jsp? textquery = man & submit = Fühlen + Glück

Die oben angegebene URL ist die erste Seite, von der ich Daten crawlen möchte, und es ist einfach, Daten von dieser Seite abzurufen.

Hier ist mein Code:

__author__ = 'Rabbit'
from scrapy.spiders import Spider
from scrapy.selector import Selector

from scrapy_Data.items import EPGD


class EPGD_spider(Spider):
    name = "EPGD"
    allowed_domains = ["epgd.biosino.org"]
    stmp = []
    term = "man"
    url_base = "http://epgd.biosino.org/EPGD/search/textsearch.jsp?textquery=man&submit=Feeling+Lucky"

    start_urls = stmp

    def parse(self, response):
        sel = Selector(response)
        sites = sel.xpath('//tr[@class="odd"]|//tr[@class="even"]')

        for site in sites:
            item = EPGD()
            item['genID'] = map(unicode.strip, site.xpath('td[1]/a/text()').extract())
            item['taxID'] = map(unicode.strip, site.xpath('td[2]/a/text()').extract())
            item['familyID'] = map(unicode.strip, site.xpath('td[3]/a/text()').extract())
            item['chromosome'] = map(unicode.strip, site.xpath('td[4]/text()').extract())
            item['symbol'] = map(unicode.strip, site.xpath('td[5]/text()').extract())
            item['description'] = map(unicode.strip, site.xpath('td[6]/text()').extract())
            yield item

Aber das Problem tritt auf, wenn ich Daten von Seite 2 abrufen möchte. Ich klicke auf die nächste Seite und die URL der zweiten Seite sieht folgendermaßen aus:

http: //epgd.biosino.org/EPGD/search/textsearch.jsp? currentIndex = 20

Wie Sie sehen, enthält die URL kein Schlüsselwort, daher weiß ich nicht, wie ich Daten von anderen Seiten abrufen kann. Vielleicht sollte ich Cookies verwenden, aber ich weiß nicht, wie ich mit dieser Situation umgehen soll, also kann mir jemand helfen.

Danke vielmals

Antworten auf die Frage(2)

Ihre Antwort auf die Frage