我想提取网址的标题,描述和关键字 我有这段代码
WebClient x = new WebClient();
string pageSource = (x.DownloadString(url));
query.title = Regex.Match(pageSource, @"\<title\b[^>]*\>\s*(?<Title>[\s\S]*?)\</title\>", RegexOptions.IgnoreCase).Groups["Title"].Value;
但我不想下载整个页面,因为它对于一系列URL来说非常耗时。有没有办法在不下载整页的情况下获取这些信息? 我应该提一下,我在谷歌搜索结果页面中获取这些URL,向谷歌购买发送查询。
答案 0 :(得分:2)
您可以通过指定范围标题,使用HttpClient
请求和下载部分结果。您可以定义要下载和读取的缓冲区长度:
static void Main()
{
Test().GetAwaiter().GetResult();
}
private static async Task Test()
{
const string url = "http://google.com";
const int bytesToRead = 2000;
using (var httpclient = new HttpClient())
{
httpclient.DefaultRequestHeaders.Range = new RangeHeaderValue(0, bytesToRead);
var response = await httpclient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead);
using (var stream = await response.Content.ReadAsStreamAsync())
{
var buffer = new byte[bytesToRead];
stream.Read(buffer, 0, buffer.Length);
var partialHtml = Encoding.UTF8.GetString(buffer);
//extract required info from partial html
}
}
}
使用&#34; old&#34;可以实现相同的结果。 WebClient