scrapy LinkExtractor(allow=(url)) 获取错误的抓取页面,正则表达式不起作用

The scrapy LinkExtractor(allow=(url)) get the wrong crawled page, the regulex doesn't work

我想抓取页面 http://www.douban.com/tag/%E7%88%B1%E6%83%85/movie。 我的蜘蛛代码的一部分是:

class MovieSpider(CrawlSpider):
    name = "doubanmovie"
    allowed_domains = ["douban.com"]
    start_urls = ["http://www.douban.com/tag/%E7%88%B1%E6%83%85/movie"]
    rules = (
            Rule(LinkExtractor(allow=(r'http://www.douban.com/tag/%E7%88%B1%E6%83%85/movie\?start=\d{2}'))),
            Rule(LinkExtractor(allow=(r"http://movie.douban.com/subject/\d+")), callback = "parse_item")
            )

    def start_requests(self):
        yield FormRequest("http://www.douban.com/tag/%E7%88%B1%E6%83%85/movie",headers={'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0'})

我只想抓取“\?start=\d{2}”这样的页面,但是scrapy蜘蛛也会抓取“\?start=100”或“\?start=1000”这样的页面.它出什么问题了?如何解决? 提前致谢。

正则表达式 \d{2} 匹配所有以两位数开头的数字。

如果您想将正则表达式限制为两位数,您可以使用 \d{2}$ 以便它仅在行尾有两个数字时才匹配。

更一般的做法是使用 \d{2}\b,这样任何非字母数字值或空格都必须跟在后面。