Асинхронный парсинг страниц и запись в файл - C#
Формулировка задачи:
Задача:
асинхронно парсить страницы сайта site.ru, вида site.ru/page/1-n, и записывать их содержимое в файл.
Не могу разобраться с async/await
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Net;
- using System.IO;
- namespace ConsoleApplication2
- {
- class Program
- {
- static void Main(string[] args)
- {
- for (int i = 0; i <= 99; i++)
- {
- Task.Run(async () =>
- {
- var httpWebRequest = (HttpWebRequest)WebRequest.Create(String.Format(@"http://site.ru/page/{0}", i.ToString()));
- //httpWebRequest.PreAuthenticate = true;
- httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
- using (var httpWebResponse = (HttpWebResponse)await httpWebRequest.GetResponseAsync())
- using (var responseStream = httpWebResponse.GetResponseStream())
- using (var streamReader = new StreamReader(responseStream))
- {
- var stringContent = await streamReader.ReadToEndAsync();
- await WriteTextAsync("aaa.txt", stringContent);
- }
- });
- }
- }
- public async Task WriteTextAsync(string filePath, string text)
- {
- byte[] encodedText = Encoding.Unicode.GetBytes(text);
- using (FileStream sourceStream = new FileStream(filePath,
- FileMode.Append, FileAccess.Write, FileShare.None,
- bufferSize: 4096, useAsync: true))
- {
- await sourceStream.WriteAsync(encodedText, 0, encodedText.Length);
- };
- }
- }
- }
Решение задачи: «Асинхронный парсинг страниц и запись в файл»
textual
Листинг программы
- using System.IO;
- using System.Linq;
- using System.Net.Http;
- using System.Threading.Tasks;
- class Class1
- {
- static void Main()
- {
- MainAsync().Wait();
- }
- static async Task MainAsync()
- {
- const string add = "https://api.vk.com/method/likes.getList?type=post&owner_id=135215546&item_id=4377&filter=likes&frinds_only=0&extended=1&offset=1&count=1000&access_token=aa5d63a10ecf232dd20ae58f807722d5e5a8d553e88fb7a833c8622bfe558ef472191341e75ddbfb8d182&item_id=";
- string[] m = { "4377", "4247", "4390", "4241", "4275", "4274", "4392" };
- var task = m.Select(async url =>
- {
- using (var clien = new HttpClient())
- {
- return await clien.GetStringAsync(add + url);
- }
- }).ToList();
- var results = await Task.WhenAll(task);
- File.WriteAllLines("result.txt",results);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д