Scrapy:LinkExtractor无法正常工作

时间:2015-08-13 19:20:51

标签: python regex web-scraping scrapy scrapy-spider

我正在尝试抓取Erowid并收集有关体验的数据。我试图从有关药物的一般信息到实际经验本身。

然而,LinkExtractor似乎并没有起作用。

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.selector import HtmlXPathSelector

from Erowid.items import ErowidItem


class ExperiencesSpider(CrawlSpider):
    name = "test"
    allowed_domains = ["www.erowid.org"]
    start_urls = ['https://www.erowid.org/experiences/subs/exp_aPVP.shtml']
    rules = [ 
        Rule(LinkExtractor(allow =('/experiences/exp.php?ID=[0-9]+')),     callback = 'parse_item', follow = True)

    ]
    def parse_item(self, response):
        [other code]

https://www.erowid.org/experiences/subs/exp_aPVP.shtml开始,我正在尝试获得具有

的href的体验
/experiences/exp.php?ID=  (some digits)

我无法在ID之后找到正确的代码,我已经尝试过各种不同的正则表达式,包括

\d+ and [0-9]+

错误的正则表达式导致错误?如果是,那么正确的正则表达式是什么?如果不是那么为什么会出现此错误?如何解决?

1 个答案:

答案 0 :(得分:2)

这个表达对我有用:

/experiences/exp\.php\?ID=\d+$

以下是rules的样子:

rules = [
    Rule(LinkExtractor(allow=r'/experiences/exp\.php\?ID=\d+$'),
         callback='parse_item', follow=True)
]