Я хочу извлечь ссылки на результат google
Мой код работает, он извлекает ссылки, но эти ссылки не являются тем, что я ожидал извлечь. Моя программа будет извлекать ссылки внутри тега «href», но все ссылки в результатах поиска не соответствуют соответствующим ссылкам, ссылка на рекламу, ссылка googles также включены что мне делать?извлечение ссылки с использованием HtmlAgilityPack и C#
using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.ServiceModel.Syndication;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
namespace Search
{
public partial class Form1 : Form
{
// load snippet
HtmlAgilityPack.HtmlDocument htmlSnippet = new HtmlAgilityPack.HtmlDocument();
public Form1()
{
InitializeComponent();
}
private void btn1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
StringBuilder sb = new StringBuilder();
byte[] ResultsBuffer = new byte[8192];
string SearchResults = "http://google.com/search?q=" + txtKeyWords.Text.Trim();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(SearchResults);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
string tempString = null;
int count = 0;
do
{
count = resStream.Read(ResultsBuffer, 0, ResultsBuffer.Length);
if (count != 0)
{
tempString = Encoding.ASCII.GetString(ResultsBuffer, 0, count);
sb.Append(tempString);
}
}
while (count > 0);
string sbb = sb.ToString();
HtmlAgilityPack.HtmlDocument html = new HtmlAgilityPack.HtmlDocument();
html.OptionOutputAsXml = true;
html.LoadHtml(sbb);
HtmlNode doc = html.DocumentNode;
foreach (HtmlNode link in doc.SelectNodes("//a[@href]"))
{
//HtmlAttribute att = link.Attributes["href"];
string hrefValue = link.GetAttributeValue("href", string.Empty);
// if()
{
int index = hrefValue.IndexOf("&");
if (index > 0)
{
hrefValue = hrefValue.Substring(0, index);
listBox1.Items.Add(hrefValue.Replace("/url?q=", ""));
}
}
}
}
}
}
, если я хочу работать с «HREF» теге я должен добавить некоторое условие, если
, но я не знаю, в каком состоянии я должен использовать здесь:
if()
где-то я читал об извлечении метки тегов, а не теги ahref
кто-нибудь может помочь?
@ververke Tnx много. Если я хочу получить заголовок каждого url и descreption URL-адреса так же, как страница результатов Google, что мне делать? – mary
Я не очень знаком с 'Xpath', поэтому я бы сделал это, используя css. Чтобы использовать селектор css с помощью 'HtmlAgilityPack', установите пакет scrapSharp' nuget, добавьте' using ScrapySharp.Extensions', и теперь у вас будет метод 'CssSelect', доступный на объектах' HtmlNode'. Теперь запустите 'hd.DocumentNode.CssSelect (". Rc h3 "). Выберите (n => n.InnerText)' должен это сделать. – Veverke
tnx много. hd.DocumentNode.CssSelect (". rc h3"). Выберите (n => n.InnerText) с этой строкой, как я получаю заголовок для каждого URL-адреса? – mary