我正在尝试对网站进行爬网,我希望它对其中包含“类别”的所有页面进行爬网,除非它们具有“ ecatalog”。如果ecatalog在网址中,请不要抓取,将其包含在输出中。
我只是在允许范围内添加了“目录”,这似乎可行,因为它处理的所有网址似乎都包含“目录”。它可能无需构建完整的正则表达式就可以工作(但是由于大多数网址都有类别,所以我无法确定。但是,无论何时我将任何内容置于拒绝值中,它最终只会刮掉站点地图页面然后停止。
我尝试了这三个和其他几个。让我感到困惑的是,我会假设如果我的拒绝价值很差,它将不会拒绝任何事情,所有的ursl都会回来。取而代之的是,deny中的任何值都会使其在第一个URL之后消失。
deny='ecatalog'
deny='.*eatalog.*
deny='/.*ecatalog.*'
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class ElectronicsSpider(CrawlSpider):
name = "example"
allowed_domains = ["www.example.com"]
start_urls = [
'https://www.example.com/content/sitemap'
]
rules = (
Rule(LinkExtractor(allow='/category', deny='/ecatalog'),
callback="parse_item",
follow=True),)
def parse_item(self, response):
print('Processing..' + response.url)