2016-04-03 19 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来代替。