1

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

我希望 Scrapy 抓取链接数学 www.example.com/help/nl/ en 拒绝匹配 www.example.com/help/en/ 和 www.example.com/website/ 的所有链接。

我有以下代码:

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')
4

2 回答 2

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'),
    )
于 2013-03-18T13:44:26.550 回答
0

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

我用了:

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

它应该可以阻止任何在 url (/help 或 /website) 中包含的内容

希望能帮助到你

于 2016-04-27T23:27:17.783 回答