Есть сайт https://ekb.zarplata.ru/resume
Я хочу загрузить его код в файл. Для этого делаю так:
using (WebClient client = new WebClient())
{
string htmlCode = client.DownloadString("http://somesite.com/default.html");
File.WriteAllText (@"D:\path.txt", contents);
}
В итоге в этом файле оказался далеко не весь html код с сайта. Например, если перейти на страницу, которую я привел выше, то видно, что там 50 резюме, к тому же у каждого резюме есть Фамилия. В файле оказалось только 25 резюме, причем фамилий нету вовсе.
Для начала, надо отловить все запросы, которые происходят при загрузке страницы.
Среди них довольно легко найти дозапрос информации:
https://api.zp.ru/v1/resumes/?geo_id=994&limit=50&state=1
Запрос возвращает всю информацию в виде json, разбирайте сразу её, незачем парсить страницу.
UPD: Для просмотра запросов я пользуюсь расширением http://livehttpheaders.mozdev.org/ для firefox. Расширение собственно и выдало мне эту ссылку.
Содержимое json можно скормить сайту типа http://json2csharp.com/ и получить вполне рабочую модель. Модель надо занести в проект, чтобы её можно было построить, верхнеуровневый объект называется RootObject.
Дальше берем сборку http://www.newtonsoft.com/json и получаем модель в коде:
var json = new WebClient().DownloadString("https://api.zp.ru/v1/resumes/?geo_id=994&limit=50&state=1");
var root = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(json);
Дальше, я лично изучаю содержимое переменной root просто в отладке в окне locals:
Минимальная информация, которая отображается на сайте, тут точно есть. У некоторых может будут даже фотографии, не искал.
Продвижение своими сайтами как стратегия роста и независимости