首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取Google搜索的前5个链接

获取Google搜索的前5个链接
EN

Stack Overflow用户
提问于 2015-11-10 19:20:38
回答 1查看 2.2K关注 0票数 0

我想做一个简单的控制台应用程序,类似于搜索引擎。

它询问用户要搜索什么,在google上查找结果,然后用户可以键入“点击第一个/第二个/第三个链接(等等)”,然后应用程序自动单击该链接。

我试过使用Selenium,我可以开始搜索并找到结果,但我不知道如何实际单击链接。我也尝试过使用鼠标坐标,但代码对我来说太复杂了。

我还试图找到一种方法来提取前5个谷歌结果的链接,然后以某种方式点击它们。

总之,我已经找了好几个小时了,但我还没有找到任何东西。如果你们能帮我,那就太棒了!

下面是代码:

代码语言:javascript
运行
复制
static void Main(string[] args)
{
    Console.WriteLine("Search for:");
    string command = Console.ReadLine();
    IWebDriver driver = new FirefoxDriver();

    driver.Navigate().GoToUrl("http://www.google.com");
    driver.Manage().Window.Maximize();

    IWebElement searchInput = driver.FindElement(By.Id("lst-ib"));
    searchInput.SendKeys(command);
    searchInput.SendKeys(Keys.Enter);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-11 06:43:41

如果它是一个控制台应用程序,您将无法单击一个链接,因为页面将不会显示。您可以从搜索结果页面抓取链接,但在导航之后如何显示该页面?我想我不明白你项目的总体目标是什么。

如果你只想抓取谷歌搜索结果页面上的链接,你可以使用下面的代码。它将抓取页面上所有搜索结果的URL。然后,您可以在屏幕上显示多个链接,然后在用户选择链接之后导航(什么?)到所需的URL。

代码语言:javascript
运行
复制
IWebElement searchInput = Driver.FindElement(By.Id("lst-ib"));
searchInput.SendKeys(command);
searchInput.SendKeys(Keys.Enter);
WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(5));
By linkLocator = By.CssSelector("cite._Rm");
wait.Until(ExpectedConditions.ElementToBeClickable(linkLocator));
IReadOnlyCollection<IWebElement> links = Driver.FindElements(linkLocator);
foreach (IWebElement link in links)
{
    Console.WriteLine(link.Text);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33637875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档