我想创建保存网页链接的网页抓取工具。我在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")+ " ";
}
}
}
}
答案 0 :(得分:0)
无头浏览器可以帮助您,因为无头浏览器是没有GUI的浏览器。 Webdriver主要支持2个无头浏览器:
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setJavascriptEnabled(true);
driver = new HtmlUnitDriver(capabilities);
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);
注意:我建议使用PhantomJS,因为与HTMLUnit相比,它可以提供更准确的结果。
答案 1 :(得分:0)
WebDriver有一个内置的方法来获取pagesource为driver()。getPageSource();
另一种方法是使用xpath:driver.getElementByXpath(&#34; body&#34;);