Scrapy 刮擦规则否认
我怎样才能通过使用Scrapy中的规则来否认对网站某些部分的刮削呢 我希望Scrapy抓取匹配www.example.com/help/nl/en的链接,拒绝所有匹配www.example.com/help/en/和www.example.com/website/的链接 我有以下代码:Scrapy 刮擦规则否认,scrapy,Scrapy,我怎样才能通过使用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
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')
试试这个
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'),
)
我的决心与@akhter答案非常相似。但是我没有使用正则表达式 我用过:
deny=('/help', '/website')
它应该使其能够阻止url(/help或/website)中的任何内容
希望它能帮助你你在爬网什么URL/网站?当你运行爬网程序时,
下载程序/response\u count
的值是多少(它将显示在日志的末尾),你能编辑这个问题来显示一些你想排除的爬网页面吗?我刚刚用你的规则和akhter的规则运行了代码,爬网了相同数量的页面,所有页面的格式都是“/help/nl/”。