gpt4 book ai didi

selenium - 如何为selenium和Scrapy编写自定义下载器中间件?

转载 作者:行者123 更新时间:2023-12-02 18:58:46 25 4
gpt4 key购买 nike

我在 selenium 和 scrapy 对象之间进行通信时遇到问题。

我正在使用 selenium 登录某个网站,一旦收到响应,我想使用 scrape 的功能来解析和处理。请有人帮助我编写中间件,以便每个请求都应该通过 Selenium Web 驱动程序,并且响应应该传递给 scrapy。

谢谢!

最佳答案

这非常简单,使用网络驱动程序创建一个中间件,并使用process_request来拦截请求,丢弃它并使用它必须将其传递给您的selenium网络驱动程序的URL:

from scrapy.http import HtmlResponse
from selenium import webdriver


class DownloaderMiddleware(object):
def __init__(self):
self.driver = webdriver.Chrome() # your chosen driver

def process_request(self, request, spider):
# only process tagged request or delete this if you want all
if not request.meta.get('selenium'):
return
self.driver.get(request.url)
body = self.driver.page_source
response = HtmlResponse(url=self.driver.current_url, body=body)
return response

这样做的缺点是你必须摆脱蜘蛛中的并发性,因为 selenium webdrive 一次只能处理一个 url。参见 settings documentation page

关于selenium - 如何为selenium和Scrapy编写自定义下载器中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40268815/

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