यहाँ कूट चल रहा है अपने ब्लॉग पर एक पोस्ट किया है .. जाहिर है आप उचित रूप और कुछ सरल नियंत्रण जोड़ना होगा ...
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 (!hrefValue.ToString().ToUpper().Contains("GOOGLE") && hrefValue.ToString().Contains("/url?q=") && hrefValue.ToString().ToUpper().Contains("HTTP://"))
{
int index = hrefValue.IndexOf("&");
if (index > 0)
{
hrefValue = hrefValue.Substring(0, index);
listBox1.Items.Add(hrefValue.Replace("/url?q=", ""));
}
}
}
}
}
}
मेरे पास एक प्रोजेक्ट है जो Google को अनुरोध भेजता है और प्रतिक्रिया देता है। Google के मार्कअप परिवर्तनों का पालन करने के लिए हमें प्रति वर्ष कई बार पार्सिंग मॉड्यूल को फिर से लिखना होगा। यह बेकार है। हालांकि इसे आमतौर पर पार्सिंग कोड को ठीक करने के लिए केवल कुछ घंटे लगते हैं। – Snowbear
@Snowbear, क्या आप पार्सिंग के लिए HtmlAgility पैक का उपयोग कर रहे हैं? –
@ शिव, नहीं, यह विरासत का हिस्सा है, जो अभी भी नियमित अभिव्यक्तियों का उपयोग करता है। धन्यवाद, इसका जिक्र करने के लिए, मैं उस समय देखता हूं कि हम उस दुःस्वप्न को फिर से लिखेंगे। – Snowbear