读书人

中国银行外汇牌价抓取代码不再起作用了

发布时间: 2012-02-26 20:19:45 作者: rapoo

中国银行外汇牌价抓取代码不再起作用了吗?
我的代码是ASP.NET的,于2008年12月13日突然失效,不知为什么。
抓取到的html代码只有<head>部分。请高手指点!
代码如下:
string html = "";

try
{
DataSet1.WaiHuiDataTable whDT = new DataSet1.WaiHuiDataTable();
string url = "http://www.boc.cn/cn/common/whpj.html";
html = new MyResponse(url).Html;
string pattern = "<td width=\"86\" align=\"center\" valign=\"middle\" bgcolor=\"#FFFFFF\" class=\'nav\'>(.*?)</td>";
MatchCollection matches = Regex.Matches(html, pattern, RegexOptions.IgnoreCase);
string strResult;
i=matches.Count;
strResult = matches[18].Result("$1");
whDT.AddWaiHuiRow("美元", decimal.Parse(strResult) / 100, DateTime.Now);
strResult = matches[90].Result("$1");
whDT.AddWaiHuiRow("欧元", decimal.Parse(strResult) / 100, DateTime.Now);
return whDT;
}
catch (Exception ex)
{
return null;
}

问题补充:MyResponse.cs代码:
Public class MyResponse
{
...
public MyResponse(string url)
{
GetHtmlCode(url);
}

private void GetHtmlCode(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
DateTime begin = DateTime.Now;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

result = response.StatusDescription;
lastModified = response.LastModified;
characterSet = response.CharacterSet;
size = response.ContentLength;

Stream stream = response.GetResponseStream();
DateTime end = DateTime.Now;
cost = end - begin;
StreamReader streamReader = new StreamReader(stream, Encoding.Default);
html = streamReader.ReadToEnd();
stream.Close();
streamReader.Close();
}
...
}

[解决办法]
我用你的GetHtmlCode代码是可以拿到的~~

你的正则貌似有问题

string pattern = " <td width=\"86\" align=\"center\" valign=\"middle\" bgcolor=\"#FFFFFF\" class=\'nav\'>(.*?) </td>";

---》
string pattern = " <td width=\"86\" align=\"center\" valign=\"middle\" bgcolor=\"#FFFFFF\" class=\'nav\'>(.*?)</td>";

多了一个空格

另外你的Encoding.Default应该改成人家网站的编码吧~~~

[解决办法]
不明白
up下
[解决办法]
外汇 换网址了
[解决办法]
前两天 我的也抓不下来
一看 它换网址了

[解决办法]

探讨
外汇 换网址了

[解决办法]
up
[解决办法]
C# code
protected void Page_Load(object sender, EventArgs e)        {            string url = "http://www.boc.cn/cn/common/whpj.html";            string encodeType = "gb2312";            string err = "";                     Response.Write(WebClinetPost(url, postData2, encodeType, out err));        }static string WebClinetPost(string url, string postData, string encodeType, out string err)        {            string uriString = url;            byte[] byteArray;            byte[] responseArray;                        Encoding encoding = Encoding.GetEncoding(encodeType);            try            {                WebClient myWebClient = new WebClient();                WebHeaderCollection myWebHeaderCollection;                myWebClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");                                myWebHeaderCollection = myWebClient.Headers;                                    byteArray = encoding.GetBytes(postData);                responseArray = myWebClient.UploadData(uriString, "POST", byteArray);                err = string.Empty;                return encoding.GetString(responseArray);            }            catch (Exception ex)            {                err = ex.Message;                return err;            }        } 


[解决办法]
银行网页改版了,前几天我们也改了对应代码
[解决办法]
就怕改版~
[解决办法]
LS已经说改版了......
[解决办法]
都是高手,帮忙顶个~~~~
[解决办法]

探讨
C# code
protected void Page_Load(object sender, EventArgs e)
{
string url = "http://www.boc.cn/cn/common/whpj.html";
string encodeType = "gb2312";
string err = "";

Response.Write(WebClinetPost(url, postData2, encodeType, out err));
}
static string WebClinetPost(string url, string postData, string encodeType, out s…

[解决办法]
探讨

[解决办法]
帮忙顶个~~~~

读书人网 >C#

热点推荐