Python Scrapy webcrawler机器人在点击第二页后无法爬过页面。

Python Scrapy webcrawler机器人在点击第二页后无法爬过页面。,python,python-2.7,scrapy,scrapy-spider,Python,Python 2.7,Scrapy,Scrapy Spider,好的,这是我的问题,我正在开发一个非常基本的蜘蛛,它可以浏览一堆页面并下载它们。我在windows上使用Python2.7中的scrapy。我有下载点下来,我的问题是,蜘蛛会下载第一页刚刚好,声称它得到了第二个链接,然后声称它完成了。它应该做的是扫描下一个页面,下载它,然后移动到下一个页面,直到页面用完为止 我不确定我到底做错了什么,除了发生的事情似乎是这样的:机器人运行,它点击开始URL中定义的页面,然后通过,获得第二个页面的链接(我已经验证了它获得的链接有效),保存第一个页面,然后。。。决定

好的,这是我的问题,我正在开发一个非常基本的蜘蛛,它可以浏览一堆页面并下载它们。我在windows上使用Python2.7中的scrapy。我有下载点下来,我的问题是,蜘蛛会下载第一页刚刚好,声称它得到了第二个链接,然后声称它完成了。它应该做的是扫描下一个页面,下载它,然后移动到下一个页面,直到页面用完为止

我不确定我到底做错了什么,除了发生的事情似乎是这样的:机器人运行,它点击开始URL中定义的页面,然后通过,获得第二个页面的链接(我已经验证了它获得的链接有效),保存第一个页面,然后。。。决定蜘蛛已经走了它的路。我想不出问题出在哪里。我得到DEBUG:Filtered duplicate请求,这可能意味着它将必须访问的链接视为副本并拒绝对其执行任何操作,但我不确定是否是这样

import scrapy
import os.path

class Spider(scrapy.Spider):
    name = "allcrawl"
    start_urls = [
        "http://forums.somethingawful.com/showthread.php?threadid=3755369&userid=0&perpage=40&pagenumber=1",
        ]
    def __init__(self):
        self.counter = 1 
        self.wherewego = "Undefined"

    def parse(self, response):
        print self.counter
        urlthing = response.xpath("//a[@title='Next page']").extract()
        urlthing = urlthing.pop()
        newurl = urlthing.split()
        url = newurl[1]
        url = url.replace("href=", "")
        url = url.replace('"', "")
        url = "http://forums.somethingawful.com/" + url
        self.wherewego = url
        return scrapy.Request(url, callback=self.parse_save)

    def parse_save(self, response):
        current = str(self.counter)
        self.counter = self.counter + 1
        filename = 'test main ' + current + '.html'
        pathname = "C:/Users/John/Programing/paradise/archive"
        complete = os.path.join(pathname, filename + '.html')
        with open(complete, 'wb') as f:
            f.write(response.body)
        f.close()
        return scrapy.Request(self.wherewego)

首先,您将第二个页面地址分配给
self.wherewego=url
,并在
Request(url,…)
中使用它,然后在
Request(self.wherewego)
中再次使用相同的url。尝试在
请求(self.wherewego)
中使用不同的url尝试之后,也尝试了dont_filter=True,我得到了一个不同的错误,在这种情况下,当它应该将链接拉到下一页时,它会锁定在同一页上。尽管有进步!谢谢首先,您将第二个页面地址分配给
self.wherewego=url
,并在
Request(url,…)
中使用它,然后在
Request(self.wherewego)
中再次使用相同的url。尝试在
请求(self.wherewego)
中使用不同的url尝试之后,也尝试了dont_filter=True,我得到了一个不同的错误,在这种情况下,当它应该将链接拉到下一页时,它会锁定在同一页上。尽管有进步!谢谢