scrapy LinkExtractor(allow =(url))得到错误的抓取页面,regulex不起作用

时间:2015-05-08 09:22:01

标签: python web-crawler scrapy

我想抓取页面the documentation。 我的蜘蛛代码的一部分是:

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 spider也会像“\?start = 100”或“\?start = 1000”一样抓取页面。它出什么问题了?怎么解决? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

更常见的是使用\d{2}\b,以便必须遵循任何非字母数字值或空格。