如何使用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')
答案 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)
希望有所帮助