在尝试决定采用哪种路线之前,我想检查一下我是否已考虑所有选择。
我目前已将一个小型网站部署到免费的Azure AppService(.NET Core + SQL Server,他们将为您提供的免费小型SQL DB上)
我希望该站点能够在幕后获取一些需要浏览器模拟的数据。
我认为这很简单-我只需要在自己的站点中运行Selenium。
A,我发现AppServices不支持安装Chrome或类似程序,并且Selenium可能仍然无法工作。 (Citation)
CefSharp
可以在不安装单独的Chrome实例的情况下模拟Chromium,这是可行的选择吗?还有我不知道的其他选项吗?(尤其是Azure内置的选项!)
我上面列出的选项中还有其他注意事项吗?
答案 0 :(得分:0)
我已经使用:
CefSharp(您可以设置用户代理以模拟chrome版本)(无头模式)。
.NET Core控制台应用程序,用于处理来自Azure Service Queue的请求。这将使您能够扩展代理并获得更多可用性。没有VM,我认为您不能仅仅因为无服务器上的图形支持限制而已。
这是此镜像的docker示例,可在构建时下载并安装.net框架:
FROM microsoft/windowsservercore
ADD . /ScrapingService
WORKDIR /ScrapingService
ADD https://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x64.exe /vc_redist.x64.exe
RUN C:\vc_redist.x64.exe /quiet /install
ENTRYPOINT ["cmd.exe", "/k", "Scraper.exe"]
在一切正常的情况下,构建一个docker映像并将其部署到Azure时,在本地测试(无头模式)。
您可以通过创建一个容器化的.net控制台应用程序,在本地运行它然后进行部署来实现。 一种警告是,如果网站更改了结构,则必须重新制定抓取规则;如果网站使用验证码,则无法抓取;如果您发送许多请求,则它可能会在网站上触发警报尽可能的攻击。</ p>