Scrapy规则否认

时间:2013-03-18 13:35:55

标签: scrapy

如何使用Scrapy中的规则拒绝抓取网站的某些部分。

我希望Scrapy抓取链接数据www.example.com/help/nl/ zh_cn拒绝所有符合www.example.com/help/en/和www.example.com/website /.// p>的链接

我有以下代码:

class MySpider(CrawlSpider):
    name = 'myspider'
    allowed_domains = ['example.com', ]
    start_urls = ['https://www.example.com/help/nl/', ]
    rules = (
        Rule(SgmlLinkExtractor(allow=(r'/help/nl/',)), callback='parse_response'),
    )

但它正在抓取整个网站。

更新

我希望Scrapy只关注包含/ help / nl /

的链接
Rule(SgmlLinkExtractor(allow=(r'/help/nl/',), deny=(other than /help/nl/), callback='parse_response')

2 个答案:

答案 0 :(得分:0)

试试这个

class MySpider(CrawlSpider):
    name = 'myspider'
    allowed_domains = ['example.com', ]
    start_urls = ['https://www.example.com/help/nl/', ]
    rules = (
        Rule(SgmlLinkExtractor(allow=(r'/help/nl/',),deny=(r'/en/$',r'/website/$',)), callback='parse_response'),
    )

答案 1 :(得分:0)

我的决心与@akhter的答案非常相似。但是我没有使用正则表达式。

我用过:

deny=('/help', '/website')

它应该使它阻止任何在url中的内容(/ help或/ website)

希望有所帮助