webClient.DownloadString() загрузил не весь html код с сайта

418
25 декабря 2016, 18:38

Есть сайт 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 резюме, причем фамилий нету вовсе.

Answer 1

Для начала, надо отловить все запросы, которые происходят при загрузке страницы.

Среди них довольно легко найти дозапрос информации:

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:

Минимальная информация, которая отображается на сайте, тут точно есть. У некоторых может будут даже фотографии, не искал.

READ ALSO
Генерация и движение объектов(врагов) [требует правки]

Генерация и движение объектов(врагов) [требует правки]

Хотел бы узнать, как в консоле реализовать генерацию, движение и стрельбу противников

336
Убрать полосы прокрутки Console C#

Убрать полосы прокрутки Console C#

Пишу мини-игру на Console C#Для более красивого отображения хочется убрать полосы прокрутки снизу и сбоку консоли

713
Что означает эта конструкция с EventHandler?

Что означает эта конструкция с EventHandler?

VS предложил "упростить"

379
Получение значение из другого класса

Получение значение из другого класса

Есть класс (1), в котором содержатся несколько приватных полей (назовем их цена, количество, цвет)Для них уже сделаны геттеры

461