Я работаю над студенческим проектом, в котором мне поручено проанализировать сообщения о поиске работы в Интернете из Dice.Com. самая важная часть - это описание работы, но я не могу понять, как получить к нему доступ. У меня нет опыта в HTML и очень мало в C #. Когда вы открываете веб-сайт, вы видите каждую публикацию вакансии, затем должны щелкнуть название вакансии, и она открывает новую страницу, чтобы показать все детали. Как я могу получить доступ к этой следующей странице, чтобы иметь возможность записать детали в консоль.
Вот то, что я пока имею, очень просто.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;
using HtmlAgilityPack;
using System.Text.RegularExpressions;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support;
using OpenQA.Selenium;
using System.Collections;
using System.Xml.Linq;
using OpenQA.Selenium.Support.UI;
namespace WebScaper
{`enter code here`
class Program
{
static void Main(string[] args)
{
GetHtmlAsync();
Console.ReadLine();
var driver = new ChromeDriver();
}
static async void GetHtmlAsync()
{
var url = "https://www.dice.com/jobs?
q=information+technology&l=arkansas#dice";
var httpclient = new HttpClient();
var html = await httpclient.GetStringAsync(url);
var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(html);
var JobsHtml = htmlDocument.DocumentNode.Descendants("div")
.Where(node => node.GetAttributeValue("id", "")
.Equals("search-results-control")).ToList();
var JobsListItems = JobsHtml[0].Descendants("div")
.Where(node => node.GetAttributeValue("class", "")
.Contains("complete-serp-result-div")).ToList();
foreach (var JobListItem in JobsListItems)
{
Console.WriteLine("Company Name:" + " " + JobListItem.Descendants("span")
.Where(node => node.GetAttributeValue("class", "")
.Contains("compName")).FirstOrDefault().InnerText.Trim('\r', '\n', '\t'));
Console.WriteLine("Job Title:" + " " + JobListItem.Descendants("span")
.Where(node => node.GetAttributeValue("itemprop", "")
.Contains("title")).FirstOrDefault().InnerText.Trim('\r', '\n', '\t'));
Console.WriteLine("Job Summary:" + " " + JobListItem.Descendants("span")
.Where(node => node.GetAttributeValue("itemprop", "")
.Contains("description")).FirstOrDefault().InnerText.Trim('\r', '\n', '\t'));
Console.WriteLine("Job Location:" + " " + JobListItem.Descendants("span")
.Where(node => node.GetAttributeValue("class", "")
.Contains("jobLoc")).FirstOrDefault().InnerText.Trim('\r', '\n', '\t'));
}
}
}
}