如何从这个页面解析全文网页?

时间:2016-04-03 15:21:20

标签: c# windows-runtime html-parsing

我需要从此页面获取曲目名称,但我得到不完整的回复

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请求,使用了移动和桌面用户代理字符串,但stil得到了不完整的响应。 但我注意到,当我在具有该地址的uc浏览器上创建下载任务时,我获得了整页文本。 如何获得完整的页面文本?

2 个答案:

答案 0 :(得分:1)

在测试应用中,我使用了有效的网址(不在请求中使用In [2]: df = pd.DataFrame({'a': [1,2,3,4,5,6,7], 'b': [1,1,1,0,0,0,0]}) ​ grouped = df.groupby('b') grouped.apply(lambda x: x.sample(frac=0.3)) Out[2]: a b b 0 6 7 0 1 2 3 1 而是直接使用&符号&),并且响应正确返回:

&

话虽如此,您的原始查询也会成功返回,它只是在完全返回之前执行多次重定向。

Redirects

但是,我确实注意到返回的HTML页面并不完全有效,因为它在响应开头包含错误信息:

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"));

您可能需要与网站的创建者核实,以检查他们的网络应用程序内容是否正常,以及他们是否可以使用直接API。

答案 1 :(得分: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();