2

I am making a wpf application and I need it to select a link at random from the generated search results. I have no idea how to go about doing that. It is just an intellectual exercise I was assigned. please help i am almost done. Here is the code so far... I am a super beginner at WPF.

namespace Search
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Btn_Click(object sender, RoutedEventArgs e)
        {
            using (var browser = new IE("http://www.google.com"))
            {
                browser.TextField(Find.ByName("q")).TypeText(_textBox.Text);
                browser.Button(Find.ByName("btnG")).Click();

                browser.WaitForComplete(5000);

                System.Windows.Forms.SendKeys.SendWait("{Enter}"); // presses search on the second screen

                browser.Button(Find.ById("gbqfb")/*.ByName("btnG")*/).Click(); // doesn't work



            }
        }
    }
}
4

1 回答 1

0

这是一些指示性代码...

private void DownloadRandomLink(string searchTerm)
{
    string fullUrl = "http://www.google.com/#q=" + searchTerm;
    WebClient wc = new WebClient();
    wc.DownloadFile(fullUrl, "file.htm");
    Random rand = new Random();
    HtmlDocument doc = new HtmlDocument();
    doc.Load("file.htm");
    var linksOnPage = from lnks in doc.DocumentNode.Descendants()
                      where lnks.Name == "a" &&
                            lnks.Attributes["href"] != null &&
                            lnks.InnerText.Trim().Length > 0
                      select new
                          {
                              Url = lnks.Attributes["href"].Value,
                              Text = lnks.InnerText
                          };
    if (linksOnPage.Count() > 0)
    {
        int randomChoice = rand.Next(0, linksOnPage.Count()-1);
        var link = linksOnPage.Skip(randomChoice).First();
        // do something with link...
    }
}

此代码采用搜索词并构建完整的 Google 网址。然后它将查询下载到本地文件中,并使用 HTML Agility Pack 打开该文件。

然后代码创建页面上所有链接的列表,并使用拼凑在一起的随机选择。

正如其他人所提到的,您需要获得 Google 的许可才能在他们的服务器上运行代码。不这样做会使您违反规定,并可能产生尴尬的后果。

此外,此代码是指示性的;它不是为了示范,甚至不是可建造的。这是获得您所追求的所需步骤的粗略想法。

您之前的设计试图与 Google 索引页面上的控件进行交互,而这种方法一开始就太脆弱了。对于初学者,您几乎无法对其进行测试。

HTML 敏捷包在这里http://htmlagilitypack.codeplex.com/wikipage?title=Examples

于 2013-10-24T13:59:44.857 回答