Skip to main content
 首页 » 编程设计

python之Scrapy 在第一页上不抓取规则跟随下一页

2025年05月04日16linjiqin


我用递归规则制作了一个蜘蛛来跟踪下一页的链接。它工作正常。
蜘蛛抓取除“start_urls”中定义的第一页之外的所有页面(999)。 有人遇到过这个问题吗?

示例代码:

class example(CrawlSpider): 
    name = "example" 
    allowed_domains = ["example.ndd"] 
    start_urls = ["http://example.ndd/startnum=1"] #first page   
 
    rules = (Rule(SgmlLinkExtractor(allow=("nextPage\.htm", ), 
                            restrict_xpaths=('//div[@class="paging"]/p[@class="nav"]',)),  
                            callback="parse_items", follow= True),) 
 
    def parse_items(self, response): 
        hxs = HtmlXPathSelector(response) 
        links= hxs.select('//td[@class="desc"]/h3/a/@href').extract() 
        list = [] 
        for link in links: 
            yield link 
        return 

edit: 搜索后,爬虫似乎直接跟随规则限制路径的结果。同样,如果以 startnum=1 开始,它会抓取 startnum=1 的页面内的 startnum=1 ..
我不知道如何解决这个问题。

请您参考如下方法:

你需要使用:def parse_start_url(self, response):

查看此答案:Scrapy CrawlSpider doesn't crawl the first landing page