我正在从一个站点上抓取url,但只有第一个请求需要selenium,而另一个不需要。是否有可能在废料处理过程中关闭硒?我想这样做,因为,就像你现在可能看到的,硒会减缓很多废料的处理过程。这是蜘蛛的代码:
class StoreSpider(scrapy.Spider):
name = 'store'
allowed_domains = ['www.store.com.br']
custom_settings = {
'COLLECTION_NAME' : 'store',
'URLS_COLLECTION_NAME' : 'store_urls',
'USES_SELENIUM' : True,
'HEADLESS' : True,
'DOWNLOADER_MIDDLEWARES': {
'scrapy.downloadermiddlewares.retry.RetryMiddleware': 90,
'navigator.middlewares.SeleniumMiddleware': 700,
}
}
categories_le = LinkExtractor(restrict_xpaths="//li[@class='h3']/a[not(@id)]")
def start_requests(self):
urls = [
'https://www.store.com.br/loja/mapa-do-site',
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse_categories)
您可以修改中间件,使其仅在请求带有
render_js
元密钥时使用Selenium像这样:
这是因为当下载程序中间件的
process_request
返回None
时,请求将进入链中的下一个中间件,最终命中Scrapy的下载程序更多信息:https://doc.scrapy.org/en/latest/topics/downloader-middleware.html#scrapy.downloadermiddlewares.DownloaderMiddleware.process_request
相关问题 更多 >
编程相关推荐