0

从过去两个月开始,我一直在研究我的项目,一切正常,但我在这里遇到了问题。我一直在 C# 中运行我的脚本:

using OpenQA.Selenium;
using OpenQA.Selenium.PhantomJS;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace console
{
    class Program
    {
        static void Main(string[] args)
        {

        IWebDriver driver = new PhantomJSDriver();
        var url = "http://example1.com";
        driver.Navigate().GoToUrl(url);
        var r = driver.FindElements(By.CssSelector("css selector of example1.com"));
        var d = r.First().Text;
        Console.WriteLine(d);

        var phantomJSDriverService = PhantomJSDriverService.CreateDefaultService();

        IWebDriver driver_p = new PhantomJSDriver(phantomJSDriverService);
        driver_p.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 30));
        var url_p = "http://example2.com";
        driver.Navigate().GoToUrl(url_p);
        var title = driver.FindElements(By.CssSelector("css selector of example2.com"));
        var myFirstScrape = title[0].Text;

        Console.WriteLine(myFirstScrape);
        Console.ReadLine();

        driver_p.Quit();


    }
  }
}

在控制台应用程序中用于桌面的 Visual Studio Express 上。我在 40 秒内得到了很好的结果。两者都给出了 40 秒,而第一个给出了不到 12 秒的结果。

问题出在这里,在Visual Studio for Web的asp.net项目中运行基于上述的脚本时,

Visual Studio的asp.net项目中的脚本是:

using OpenQA.Selenium;
using OpenQA.Selenium.PhantomJS;
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebScraperapp
    {
        public partial class _Default : Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {


           var phantomJSDriverService = PhantomJSDriverService.CreateDefaultService();

        IWebDriver driver = new PhantomJSDriver(phantomJSDriverService);
        driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 30));
        var url = "http://www.example1.com";
        driver.Navigate().GoToUrl(url);
        var title = driver.FindElements(By.CssSelector("css selector of example 1"));
        var myFirstScrape = title[0].Text;
       Label2.Text = myFirstScrape;
        driver.Quit();


        }

    }
}

我从上面的 asp.net 项目代码中得到的结果超过 150 秒,这对我的业务来说不合适。我一直在努力将其分解为最小 < 50 秒。

注意:如果我能在 php 脚本中获得最终输出,我会非常高兴,我不知道虚拟主机服务器上的 phantomjs,因此这个项目首选 asp.net。

删除该implicitlywait功能后,我得到了相同的结果!

提前致谢!

4

0 回答 0