如何使用selenium获取运行firefox的页面源代码?

时间:2016-01-17 12:11:44

标签: html selenium-webdriver

我想创建保存网页链接的网页抓取工具。我在win app中编写了这段代码,目前正在使用。现在我想要打开浏览器完成这项工作。请帮助

using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
    using OpenQA.Selenium;
    using OpenQA.Selenium.Firefox;
    namespace spammer
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private IWebDriver driver;
            private void button1_Click(object sender, EventArgs e)
            {
                driver = new FirefoxDriver();
                driver.Navigate().GoToUrl("http://blogfa.com/members/UsersList.aspx?dir=01");
                IList<IWebElement> lis = driver.FindElements(By.CssSelector(".ull > li > a"));
                string href = null;
                foreach (IWebElement li in lis)
                {
                     href += li.GetAttribute("href")+ " ";
                }


            }
        }
    }

2 个答案:

答案 0 :(得分:0)

无头浏览器可以帮助您,因为无头浏览器是没有GUI的浏览器。 Webdriver主要支持2个无头浏览器:

  1. HTMLUnit - 以下代码行将为您提供帮助。
  2. import org.openqa.selenium.htmlunit.HtmlUnitDriver;

            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setJavascriptEnabled(true);
            driver = new HtmlUnitDriver(capabilities);
    
    1. PhantomJS - 以下代码行将为您提供帮助。

      下载phantonJS驱动程序并使用以下代码行。

          DesiredCapabilities capabilities = new DesiredCapabilities();
          capabilities.setJavascriptEnabled(true);
          capabilities.setCapability("takesScreenshot", true);
          capabilities.setCapability(
                  "PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY",
                  "<Path of phantomJS driver>"
              );
      
      
          driver = new PhantomJSDriver(capabilities);
      
    2. 注意:我建议使用PhantomJS,因为与HTMLUnit相比,它可以提供更准确的结果。

答案 1 :(得分:0)

WebDriver有一个内置的方法来获取pagesource为driver()。getPageSource();

另一种方法是使用xpath:driver.getElementByXpath(&#34; body&#34;);