gpt4 book ai didi

python - Scrapy - 在第一次请求后禁用 Selenium

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:01 24 4
gpt4 key购买 nike

我正在从网站上抓取网址,但只有第一个请求需要 Selenium ,而其他请求则不需要。是否可以在抓取过程中关闭 Selenium?我想这样做,因为,就像你现在可能一样,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。

类似这样的事情:

class SeleniumMiddleware(object):
...
def process_request(self, request, spider):
if not request.meta.get('render_js'):
# disable js rendering in a per-request basis
return

# render with selenium
...

这是有效的,因为当下载器中间件的 process_request 返回 None 时,请求将继续到链中的下一个中间件,最终到达 Scrapy 的下载器。

更多信息请点击:https://doc.scrapy.org/en/latest/topics/downloader-middleware.html#scrapy.downloadermiddlewares.DownloaderMiddleware.process_request

关于python - Scrapy - 在第一次请求后禁用 Selenium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52631469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com