頁面:http://www.yzu.edu.cn/col/col37746/index.html?uid=55987&pageNum=1
能獲取到原始碼然后告訴我下代碼怎么實作的 直接結單
uj5u.com熱心網友回復:
打開瀏覽器,右鍵查看源代碼。代碼實作的話,使用webclient即可。
string url = @"http://www.yzu.edu.cn/col/col37746/index.html?uid=55987&pageNum=1";
WebClient wb = new WebClient();
string htmlData = wb.DownloadString(url).ToString();
uj5u.com熱心網友回復:
獲取的不完整呀
uj5u.com熱心網友回復:
1#的代碼沒問題..
var html=new webclient.downloadstring("url");
可以獲取當前html的"原始碼".
但是你說到"不完整" 這個東西 他獲取到是 html的原始碼 而不是F12查看元素的原始碼.
因為里面有一些東西是動態加載出來的. 這種是無法獲取的.. 而且也沒有解決方案.
所以如果你想要找一些資料 你只能F12看里面有沒有其他ajax的請求了.
于是我打開了這個網頁. 發現你想獲取的 就是新聞吧 也就是 你想采集新聞.
那么我們F12抓一下資料 就能看到有介面請求.
這里
http://www.yzu.edu.cn/module/web/jpage/dataproxy.jsp?startrecord=61&endrecord=120&perpage=20&MmEwMD=4dFAejc73667JfvLEKTe6yyzx2HofN1YFACWDoOzWCrROd58SO3y.6HDBrxc40JEFL8cS5c63e5KpEFnZssfCmUAqjlgV3K_6fP.tODg3C5OndOTRoNi2UkCDUhyr9VLOja7IgGVA8xvVYO2ujwGZXjYyxoyoUiI57nAEEmesn.bnIEHMoeyD8uSkj_SZEQD08wnI4mSNCdpCPKfdZVKzmnaOgoos_6CSRcRuzcQXl0UyPxgUTeLmF4qQHtSqHDxjN7GAisHPiiLJ.dyln.STmt6zx.UohSQrM2ENMaMKKqWZElTyBRzkie7wBSv5Hm.VolPZIcSQlC2Pe6v31OCXpYwMev0zexaX1fF1C9H4rzD9Eoo67Bwng4rMiZ03Tkcj4ZQkNn89ZKBvc50FAGoUGeai1wODLV7W47uDYX4AJeQAM9tExxTv0Ghi6lywohxx9sc
請求這里發現回傳的是xml的資料
<datastore><totalrecord>8558</totalrecord><totalpage>428</totalpage><recordset><record><![CDATA[<li><span>2019-09-03</span><a href='https://bbs.csdn.net/art/2019/9/3/art_37746_710465.html' title='我校第二屆“中美人才培養計劃121雙學位專案”學生赴美學習' target='_blank'>我校第二屆“中美人才培養計劃121雙學位專案”學生赴美學習</a></li>]]></record><record><![CDATA[<li><span>2019-09-02</span><a href='https://bbs.csdn.net/art/2019/9/2/art_37746_710399.html' title='我校承辦揚州市內審協會科教文衛片內審作業交流會' target='_blank'>我校承辦揚州市內審協會科教文衛片內審作業交流會</a></li>]]></record><record><![CDATA[<li><span>2019-08-
至于如何獲取請求地址以及如何決議xml 那是你自己的問題了.
只能幫你到這了.
uj5u.com熱心網友回復:
我打開你說的請求 是空的頁面.。。
uj5u.com熱心網友回復:
這個問題我已經琢磨了好多天了,大佬能不能幫幫我。
uj5u.com熱心網友回復:
我用的HttpWebRequest
uj5u.com熱心網友回復:
爬蟲還是python好做,可以使用Selenium+PhantomJS抓取Ajax和動態HTML內容C#可以試下CefSharp+HtmlAgilityPack
uj5u.com熱心網友回復:
這個我也用了 但獲取不到完整的原始碼
uj5u.com熱心網友回復:
你有沒有獲取原始碼的例子那
uj5u.com熱心網友回復:
我想問一下,你到底分的清什么是原始碼,什么是瀏覽器渲染,什么是DOM么不信你問一下IE,google瀏覽器,360瀏覽器,看看他們的右鍵查看源代碼到底是什么??
告訴我,IE右鍵查看源代碼,不是你所謂的完整
google瀏覽器右鍵查看源代碼,不是你所謂的完整
uj5u.com熱心網友回復:
網上資料比較少,沒找到,你能給我個獲取原始碼的方法嗎,你說的這個winform能用嗎
uj5u.com熱心網友回復:
帶上頭部標簽 然后找對應setcookie的頁面 最主要的是要宣告agent 和來源
uj5u.com熱心網友回復:
我用的HttpWebRequest![]()
這個我也用了 但獲取不到完整的原始碼
帶上頭部標簽 然后找對應setcookie的頁面 最主要的是要宣告agent 和來源
大佬能弄個示例嗎 你這樣說我不是很懂
uj5u.com熱心網友回復:
public string GetHtmlInfo(){
string strUrl="http://www.yzu.edu.cn/col/col37746/index.html?uid=55987&pageNum=1";
string strHtml = string.Empty;
Uri httpURL = new Uri(strUrl);
System.Net.HttpWebRequest httpReq;
System.Net.HttpWebResponse httpResp;
string strBuff = "";
char[] cbuffer = new char[1000];
int byteRead = 0;
///HttpWebRequest類繼承于WebRequest,并沒有自己的建構式,需通過WebRequest的Creat方法 建立,并進行強制的型別轉換
httpReq = (HttpWebRequest)WebRequest.Create(httpURL);
///通過HttpWebRequest的GetResponse()方法建立HttpWebResponse,強制型別轉換
httpResp = (HttpWebResponse)httpReq.GetResponse();
///GetResponseStream()方法獲取HTTP回應的資料流,并嘗試取得URL中所指定的網頁內容
///若成功取得網頁的內容,則以System.IO.Stream形式回傳,若失敗則產生ProtoclViolationException錯 誤。在此正確的做法應將以下的代碼放到一個try塊中處理。這里簡單處理
Stream respStream = httpResp.GetResponseStream();
///回傳的內容是Stream形式的,所以可以利用StreamReader類獲取GetResponseStream的內容,并以
//StreamReader類的Read方法依次讀取網頁源程式代碼每一行的內容,直至行尾(讀取的編碼格式:UTF8)
StreamReader respStreamReader = new StreamReader(respStream, Encoding.UTF8);
byteRead = respStreamReader.Read(cbuffer, 0, 256);
while (byteRead != 0)
{
string strResp = new string(cbuffer, 0, byteRead);
strBuff = strBuff + strResp;
byteRead = respStreamReader.Read(cbuffer, 0, 256);
}
respStream.Close();
strHtml = strBuff;
return strHtml;
}
uj5u.com熱心網友回復:

public string GetHtmlInfo()
{
string strUrl="http://www.yzu.edu.cn/col/col37746/index.html?uid=55987&pageNum=1";
string strHtml = string.Empty;
Uri httpURL = new Uri(strUrl);
System.Net.HttpWebRequest httpReq;
System.Net.HttpWebResponse httpResp;
string strBuff = "";
char[] cbuffer = new char[1000];
int byteRead = 0;
///HttpWebRequest類繼承于WebRequest,并沒有自己的建構式,需通過WebRequest的Creat方法 建立,并進行強制的型別轉換
httpReq = (HttpWebRequest)WebRequest.Create(httpURL);
///通過HttpWebRequest的GetResponse()方法建立HttpWebResponse,強制型別轉換
httpResp = (HttpWebResponse)httpReq.GetResponse();
///GetResponseStream()方法獲取HTTP回應的資料流,并嘗試取得URL中所指定的網頁內容
///若成功取得網頁的內容,則以System.IO.Stream形式回傳,若失敗則產生ProtoclViolationException錯 誤。在此正確的做法應將以下的代碼放到一個try塊中處理。這里簡單處理
Stream respStream = httpResp.GetResponseStream();
///回傳的內容是Stream形式的,所以可以利用StreamReader類獲取GetResponseStream的內容,并以
//StreamReader類的Read方法依次讀取網頁源程式代碼每一行的內容,直至行尾(讀取的編碼格式:UTF8)
StreamReader respStreamReader = new StreamReader(respStream, Encoding.UTF8);
byteRead = respStreamReader.Read(cbuffer, 0, 256);
while (byteRead != 0)
{
string strResp = new string(cbuffer, 0, byteRead);
strBuff = strBuff + strResp;
byteRead = respStreamReader.Read(cbuffer, 0, 256);
}
respStream.Close();
strHtml = strBuff;
return strHtml;
}
試了一下 還是不行

uj5u.com熱心網友回復:
public string GetHtmlInfo()
{
string strUrl="http://www.yzu.edu.cn/col/col37746/index.html?uid=55987&pageNum=1";
string strHtml = string.Empty;
Uri httpURL = new Uri(strUrl);
System.Net.HttpWebRequest httpReq;
System.Net.HttpWebResponse httpResp;
string strBuff = "";
char[] cbuffer = new char[1000];
int byteRead = 0;
///HttpWebRequest類繼承于WebRequest,并沒有自己的建構式,需通過WebRequest的Creat方法 建立,并進行強制的型別轉換
httpReq = (HttpWebRequest)WebRequest.Create(httpURL);
///通過HttpWebRequest的GetResponse()方法建立HttpWebResponse,強制型別轉換
httpResp = (HttpWebResponse)httpReq.GetResponse();
///GetResponseStream()方法獲取HTTP回應的資料流,并嘗試取得URL中所指定的網頁內容
///若成功取得網頁的內容,則以System.IO.Stream形式回傳,若失敗則產生ProtoclViolationException錯 誤。在此正確的做法應將以下的代碼放到一個try塊中處理。這里簡單處理
Stream respStream = httpResp.GetResponseStream();
///回傳的內容是Stream形式的,所以可以利用StreamReader類獲取GetResponseStream的內容,并以
//StreamReader類的Read方法依次讀取網頁源程式代碼每一行的內容,直至行尾(讀取的編碼格式:UTF8)
StreamReader respStreamReader = new StreamReader(respStream, Encoding.UTF8);
byteRead = respStreamReader.Read(cbuffer, 0, 256);
while (byteRead != 0)
{
string strResp = new string(cbuffer, 0, byteRead);
strBuff = strBuff + strResp;
byteRead = respStreamReader.Read(cbuffer, 0, 256);
}
respStream.Close();
strHtml = strBuff;
return strHtml;
}
用心了謝謝你 不過問題還是沒解決
uj5u.com熱心網友回復:
string message = "";HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://baidu.com");
HttpWebResponse response=null;
try
{
request.Proxy = null;
//request.KeepAlive = false;
//宣告一個HttpWebRequest請求
request.Timeout = 60000;
//設定連接超時時間
request.Headers.Set("Pragma", "no-cache");
response = (HttpWebResponse)request.GetResponse();
if (response.ToString() != "")
{
Stream streamReceive = response.GetResponseStream();
Encoding encoding = Encoding.GetEncoding("UTF-8");//亂碼處理
StreamReader streamReader = new StreamReader(streamReceive, encoding);
message = streamReader.ReadToEnd();
//取指定第幾個table
String withoutNString = message.Replace("\n", "");
//過濾\r 轉換成空
String withoutRString = withoutNString.Replace("\r", "");
//過濾\t 轉換成空
String withoutTString = withoutRString.Replace("\t", "");
//過濾\ 轉換成空
String newString = withoutTString.Replace("\\", "");
//獲取html中的body標簽
String result = Regex.Match(newString, @"<body.*>.*</body>").ToString();
//過濾注釋
String result2 = Regex.Replace(result, @"<!--(?s).*?-->", "", RegexOptions.IgnoreCase);
//過濾nbsp標簽
String result3 = Regex.Replace(result2, @" ", "", RegexOptions.IgnoreCase);
//獲取body中的所有table
Regex regex = new Regex(@"<table.*?>[\s\S]*?<\/table>");
MatchCollection mc = regex.Matches(result3);
//獲取集合類中自己需要的某個table
String newHtmlStr = mc[1].ToString();
//將資料回傳
//Response.Write(newHtmlStr);
Regex reg = new Regex(@"(?<=<td>).*?(?=</td>)");
mc = reg.Matches(newHtmlStr);
string strQh = mc[0].ToString();
string strZj = mc[1].ToString();
string dataTime = mc[2].ToString();
DateTime dt = Convert.ToDateTime(dataTime).AddMinutes(6.1);
TimeSpan ts = dt - DateTime.Now;
if (ts.TotalMilliseconds <= 0)
{
hifMilliseconds.Value = "20000";
}
else if (ts.TotalMilliseconds > 306000)
{
hifMilliseconds.Value = "360000";
}
else
{
hifMilliseconds.Value = ts.TotalMilliseconds.ToString();
}
//hifMilliseconds.Value = (Convert.ToInt32(hifMilliseconds.Value) * 1000).ToString();
string strSql = "select QH from TbKj where QH='" + strQh + "'";
DataSet dst = Business.Public.Public.ExcuteDataSet(strSql);
if (dst.Tables[0].Rows.Count == 0)
{
strSql = "insert into TbKj values('" + strQh + "','" + strZj + "','" + dataTime + "','0') update TbKj set Ifkj='1' where QH<>" + strQh + "";
Business.Public.Public.ExcuteSql(strSql);
}
else
{
hifMilliseconds.Value = "20000";
}
streamReceive.Close();
streamReader.Close();
}
response.Close();
request.Abort();
}
catch (Exception exp)
{
//MessageBox.Show(exp.Message);
hifMilliseconds.Value = "20000";
request.Abort();
//this.Response.Redirect("F5.aspx");
}
finally
{
if (request != null)
{
try
{
request.Abort();
}
catch
{
request.Abort();
}
}
if (response != null)
{
try
{
response.Close();
}
catch
{
response.Close();
}
}
}
只能幫到這里了。 具體是不是你需要的
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/106042.html
標籤:ASP.NET
下一篇:SpVoice報錯問題
