2016-04-03 18 views
0

我需要從該頁面的曲目名稱,但我得到uncomplete響應如何從此頁面解析全文網頁?

var response = await client.GetStringAsync(new Uri("http://parmismedia1.com/musicplayeralbum.aspx?album=666&id=8503&title=farzad-farzin-6-to-che-bashi")); 

我使用Firefox的檢查,發送POST請求,使用移動和桌面用戶代理字符串,但還是老樣子得到uncomplete響應。 但我注意到,當我使用該地址在uc瀏覽器上創建下載任務時,我得到整頁文本。 我如何獲得完整的頁面文本?

回答

0

我仍然搞清楚爲什麼client.GetStringAsync不工作,但我能夠通過使用System.Net.HttpWebRequest獲取頁面html。

下面的代碼示例。

Uri address = new Uri("http://parmismedia1.com/musicplayeralbum.aspx?album=666&id=8503&title=farzad-farzin-6-to-che-bashi"); 
HttpWebRequest httpRequest = WebRequest.Create(address) as HttpWebRequest; 
httpRequest.UseDefaultCredentials = true; 
httpRequest.ServicePoint.Expect100Continue = false; 
httpRequest.Proxy.Credentials = CredentialCache.DefaultCredentials; 
httpRequest.ProtocolVersion = HttpVersion.Version11; 
httpRequest.UserAgent = @"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"; 
httpRequest.Method = "GET"; 
httpRequest.Timeout = 3000; 
HttpWebResponse response = httpRequest.GetResponse() as HttpWebResponse; 
StreamReader reader = new StreamReader(response.GetResponseStream()); 

string html = reader.ReadToEnd(); 

response.Close(); 
+0

它的工作原理和我得到頁面文本,但我的意思是它不包括包含曲目列表的部分。如果您在瀏覽器中打開該頁面,則可以看到左側包含專輯封面和曲目的部分,並且該部分不包含在已分析的文本中。 – mhmt93t

+0

你的回覆文字是否包含曲目名稱? – mhmt93t

+0

是的,它的確如此。也許你正在使用VS字符串檢查器,有時它不會顯示大字符串的所有內容。嘗試添加一些像System.IO.File.WriteAllText(@「C:\ temp \ test.txt」,html);並在文件中查看結果。或者在代碼中測試歌曲名稱,如bool containsThirdSong = html.Contains(「3 - Dir Omadi」);. –

1

在測試程序中,我使用一個有效的URL(通過不使用在所述請求中&代替使用直接&符號&),並且響應正確地返回:

var client = new HttpClient(); 
var response = await client.GetStringAsync(new Uri("https://parmismedia1.com/musicplayeralbum.aspx?album=666&id=8503&title=farzad-farzin-6-to-che-bashi")); 

如此說來,您的原始查詢也會成功返回,只是在完全返回之前執行多次重定向。

Redirects

但是,我沒有因爲它包含在響應開頭的錯誤信息通知,返回的HTML頁面並不完全有效:

The process cannot access the file 'C:\inetpub\PMWebsite\Log\500_2016-04-03.log' because it is being used by another process. 

<!DOCTYPE html> 
<html lang="en" class="app"> 
<head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" /><title> 

您可能要檢查與該網站的創建者檢查是否抓取他們的Web應用程序內容是否正常,以及他們是否可以使用直接API來代替。