Я хочу попробовать разделить свои музыкальные файлы на папки по жанрам и для удобства пишу код на C#. Нужная мне информация находится в этом классе div HTML-кода страницы Google "xGj8Mb", но, используя стандартный метод C#, а также библиотеку AngleSharp, я не могу получить доступ к этой информации, и она не сохраняет много другой информации. Я переписал тот же код на Java, используя библиотеку Jsoup, и он берет всю информацию со страницы. Ниже я привожу код, который использовал для этого эксперимента, используя AngleSharp и стандартный метод.
Код, используя стандартный метод
public class Program {
private static async Task Main(string[] args) {
const string folderPath = @"C:\Users\chris\Desktop\Attilio\ATTILIO MUSIC";
if (!Directory.Exists(folderPath)) {
Console.Error.WriteLine("DOES NOT EXIST");
return;
}
var archive = Directory.GetFiles(folderPath);
foreach (var entry in archive) {
// Check if the file is not a directory and has the .mp3 or .wav extension
var fileName = entry.Split(folderPath + @"\")[1];
//Console.WriteLine(fileName);
SearchOnInternet(fileName);
return;
}
Console.WriteLine($"Number: {archive.Length}");
}
private static void SearchOnInternet(string fileName) {
// Split to remove the extension from the file name
if (fileName.EndsWith(".mp3"))
fileName = fileName.Split(".mp3")[0];
else if (fileName.EndsWith(".wav"))
fileName = fileName.Split(".wav")[0];
// Conversion for the search
var fileNameAsUrl = Uri.EscapeDataString(fileName);
Console.WriteLine(fileNameAsUrl);
var url =
$"https://www.google.com/search?q={fileNameAsUrl}";
// Search
using (var client = new HttpClient()) {
var response = client.GetAsync(url);
if (response.Result.IsSuccessStatusCode) {
var responseBody = response.Result.Content.ReadAsStringAsync();
// Save page
var outputPath = @"C:\Users\chris\Documents\Universita\Programmi\C#\FileAura\FileAuraServer\Search";
if (!Directory.Exists(outputPath))
Directory.CreateDirectory(outputPath);
File.WriteAllText(
@$"{outputPath}\{fileName}.html",
responseBody.Result);
}
}
}
Код с использованием AngleSharp
private static async void SearchOnInternet(string fileName) {
// Split to remove the extension from the file name
if (fileName.EndsWith(".mp3"))
fileName = fileName.Split(".mp3")[0];
else if (fileName.EndsWith(".wav"))
fileName = fileName.Split(".wav")[0];
// Conversion for the search
var fileNameAsUrl = Uri.EscapeDataString(fileName);
var googleSearchUrl =
$"https://www.google.com/search?q={fileNameAsUrl}";
// Create an HttpClient to send the request
using var httpClient = new HttpClient();
// Send a GET request to Google
var response = await httpClient.GetAsync(googleSearchUrl);
// Ensure the request was successful
response.EnsureSuccessStatusCode();
// Get the response content as a string
var responseContent = await response.Content.ReadAsStringAsync();
// Save the HTML content to a file
string filePath = "output.html";
await File.WriteAllTextAsync(filePath, responseContent);
Console.WriteLine($"The HTML content has been saved to {filePath}");
// Configure AngleSharp to parse the HTML
var context = BrowsingContext.New(Configuration.Default);
var parser = context.GetService();
var document = await parser.ParseDocumentAsync(responseContent);
// Example: extract the title of the search results page
var title = document.Title;
Console.WriteLine("Title: " + title);
// Example: extract the search results
var results = document.QuerySelectorAll("h3"); // elements contain the titles of the search results
foreach (var result in results)
{
Console.WriteLine(result.TextContent);
}
}
Подробнее здесь: https://stackoverflow.com/questions/788 ... b-scraping
Недостающая информация при парсинге веб-страниц ⇐ C#
Место общения программистов C#
-
Anonymous
1722677046
Anonymous
Я хочу попробовать разделить свои музыкальные файлы на папки по жанрам и для удобства пишу код на C#. Нужная мне информация находится в этом классе div HTML-кода страницы Google "xGj8Mb", но, используя стандартный метод C#, а также библиотеку AngleSharp, я не могу получить доступ к этой информации, и она не сохраняет много другой информации. Я переписал тот же код на Java, используя библиотеку Jsoup, и он берет всю информацию со страницы. Ниже я привожу код, который использовал для этого эксперимента, используя AngleSharp и стандартный метод.
[b]Код, используя стандартный метод[/b]
public class Program {
private static async Task Main(string[] args) {
const string folderPath = @"C:\Users\chris\Desktop\Attilio\ATTILIO MUSIC";
if (!Directory.Exists(folderPath)) {
Console.Error.WriteLine("DOES NOT EXIST");
return;
}
var archive = Directory.GetFiles(folderPath);
foreach (var entry in archive) {
// Check if the file is not a directory and has the .mp3 or .wav extension
var fileName = entry.Split(folderPath + @"\")[1];
//Console.WriteLine(fileName);
SearchOnInternet(fileName);
return;
}
Console.WriteLine($"Number: {archive.Length}");
}
private static void SearchOnInternet(string fileName) {
// Split to remove the extension from the file name
if (fileName.EndsWith(".mp3"))
fileName = fileName.Split(".mp3")[0];
else if (fileName.EndsWith(".wav"))
fileName = fileName.Split(".wav")[0];
// Conversion for the search
var fileNameAsUrl = Uri.EscapeDataString(fileName);
Console.WriteLine(fileNameAsUrl);
var url =
$"https://www.google.com/search?q={fileNameAsUrl}";
// Search
using (var client = new HttpClient()) {
var response = client.GetAsync(url);
if (response.Result.IsSuccessStatusCode) {
var responseBody = response.Result.Content.ReadAsStringAsync();
// Save page
var outputPath = @"C:\Users\chris\Documents\Universita\Programmi\C#\FileAura\FileAuraServer\Search";
if (!Directory.Exists(outputPath))
Directory.CreateDirectory(outputPath);
File.WriteAllText(
@$"{outputPath}\{fileName}.html",
responseBody.Result);
}
}
}
[b]Код с использованием AngleSharp[/b]
private static async void SearchOnInternet(string fileName) {
// Split to remove the extension from the file name
if (fileName.EndsWith(".mp3"))
fileName = fileName.Split(".mp3")[0];
else if (fileName.EndsWith(".wav"))
fileName = fileName.Split(".wav")[0];
// Conversion for the search
var fileNameAsUrl = Uri.EscapeDataString(fileName);
var googleSearchUrl =
$"https://www.google.com/search?q={fileNameAsUrl}";
// Create an HttpClient to send the request
using var httpClient = new HttpClient();
// Send a GET request to Google
var response = await httpClient.GetAsync(googleSearchUrl);
// Ensure the request was successful
response.EnsureSuccessStatusCode();
// Get the response content as a string
var responseContent = await response.Content.ReadAsStringAsync();
// Save the HTML content to a file
string filePath = "output.html";
await File.WriteAllTextAsync(filePath, responseContent);
Console.WriteLine($"The HTML content has been saved to {filePath}");
// Configure AngleSharp to parse the HTML
var context = BrowsingContext.New(Configuration.Default);
var parser = context.GetService();
var document = await parser.ParseDocumentAsync(responseContent);
// Example: extract the title of the search results page
var title = document.Title;
Console.WriteLine("Title: " + title);
// Example: extract the search results
var results = document.QuerySelectorAll("h3"); // elements contain the titles of the search results
foreach (var result in results)
{
Console.WriteLine(result.TextContent);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78828327/missing-information-with-web-scraping[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия