.net抓取网页数据

时间:2023-05-04 09:54:44

1、想通过代码获得某个页面的数据,首先根据右键查看页面源代码,通过分析。再通过下面代码,修改,一步步查找出所需内容,存入数据库。

 //根据Url地址得到网页的html源码
private string GetWebContent(string Url)
{
string strResult = "";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
//声明一个HttpWebRequest请求
request.Timeout = ;
//设置连接超时时间
request.Headers.Set("Pragma", "no-cache");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding = Encoding.GetEncoding("utf-8");
StreamReader streamReader = new StreamReader(streamReceive, encoding);
strResult = streamReader.ReadToEnd();
}
catch
{
MessageBox.Show("出错");
}
return strResult;
} private void button1_Click(object sender, EventArgs e)
{
//要抓取的URL地址
string Url = "http://kxt.com/data/20.html"; //☆☆☆☆☆☆☆☆☆☆
//得到指定Url的源码
string strWebContent = GetWebContent(Url);
richTextBox1.Text = strWebContent;
//取出和数据有关的那段源码
int iBodyStart = strWebContent.IndexOf("<body", );
int iStart = strWebContent.IndexOf("历史数据", iBodyStart);
int iTableStart = strWebContent.IndexOf("<ul", iStart);
int iTableEnd = strWebContent.IndexOf("</ul>", iTableStart);
string strWeb = strWebContent.Substring(iTableStart, iTableEnd - iTableStart + );
//生成HtmlDocument
WebBrowser webb = new WebBrowser();
webb.Navigate("about:blank");
HtmlDocument htmldoc = webb.Document.OpenNew(true);
htmldoc.Write(strWeb);
HtmlElementCollection htmlTR = htmldoc.GetElementsByTagName("li");
int i = ;
foreach (HtmlElement tr in htmlTR)
{
i++;
if (i == )
{
continue;
}
if (i == htmlTR.Count - )
{
break;
}
HtmlElementCollection spans = tr.GetElementsByTagName("span"); string dateTime = spans[].InnerText; string netWeightOunce = spans[].InnerText;
string netWeightTon = spans[].InnerText;
string totalValue = spans[].InnerText;
string regulation = spans[].InnerText;
//string affectOil = spans[5].InnerText; //Id, UpdateTime, NetWeightOunce, NetWeightTon, TotalValue, Regulation, FinanceTime
SqlServer ado=new SqlServer();
ado.AddField("UpdateTime",DateTime.Now);
ado.AddField("NetWeightOunce", netWeightOunce);
ado.AddField("NetWeightTon", netWeightTon);
ado.AddField("TotalValue", totalValue);
// ado.AddField("EffectOil", affectOil);
ado.AddField("Regulation", regulation);
ado.AddField("FinanceTime", Convert.ToDateTime(dateTime).ToString("yyyy-MM-dd"));//☆☆☆☆☆☆☆☆☆☆ ado.Insert("Silver");//☆☆☆☆☆☆☆☆☆☆ } MessageBox.Show("OK"); }