Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 31.01.2013
Сообщений: 32
1

Парсер love.mail.ru (htmlagilitypack)

21.08.2016, 13:11. Показов 3309. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добрый день.
Есть проект парсинга love.mail.ru (http://love.mail.ru/search.pht... 0_0&form=1)
Пришел в тупик.

Задача :
Спарсить ID людей .(Используюя htmlagilitypack)

Кто-то скажет: Можно регулярками - НЕТ, учусь htmlagilitypack

Проблема:
Начинаю парсить и парсится нормально,но с мусором (да да ,я криво составляю запрос и у меня парсит ID не с ссылки,а со скрипта. )

Опять же - мусор можно убрать,но как спарсить ссылку?

Картинка
Парсер love.mail.ru (htmlagilitypack)


Всем спасибо кто пытается помочь.


_exp10der_ если ты читаешь это,то спасибо что помогаешь новичкам

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using xNet.Net;
 
namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
 
        CookieDictionary cookie = new CookieDictionary();
        HttpRequest request = new HttpRequest();
 
        public Form1()
        {
            InitializeComponent();
            request.Cookies = cookie;
        }
 
 
 
        private void button1_Click(object sender, EventArgs e)
        {
           RTB.Clear();
           Go_Pars();
 
        
 
        }
 
        public void Go_Pars() {
 
            string zapros = @"http://love.mail.ru/search.phtml?ia=F&lf=N&af=18&at=80&t=a&s_c=0_0_0_0&form=1";
            string content = "";
            request.UserAgent = HttpHelper.IEUserAgent();
 
            // Отправляем запрос.
            request.Referer = HttpHelper.UrlEncode(zapros);
            HttpResponse response = request.Get(zapros);
            // Принимаем тело сообщения в виде строки.
            content = response.ToString();
 
            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            HtmlNodeCollection nodes;
            doc.LoadHtml(content);
            //Парсим страницу на блоки со ссылками
            //   nodes = doc.DocumentNode.SelectNodes("//div[@class='serp-list']//span[@class='serp-url__item']//a[1]");
            //  href
            //  nodes = doc.DocumentNode.SelectSingleNode("//a").GetAttributeValue("href", "");
            nodes = doc.DocumentNode
                .SelectNodes("//*[@class='tiles-list js-search-results-container']");        //.Attributes["href"];
            int count = 0;
            int pos = 0;
            if (nodes == null)
                return;
            foreach (HtmlNode node in nodes)
            {
                count++;
               RTB.AppendText(count + ". " + node.InnerText + "\n");
              
                pos += node.InnerText.Length + 1 + (Convert.ToString(count) + ". ").Length;
            }
 
        }
 
 
    }
}
Вложения
Тип файла: rar WindowsFormsApplication6.rar (154.7 Кб, 9 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.08.2016, 13:11
Ответы с готовыми решениями:

Парсер на HtmlAgilityPack содержит ошибки
Есть специалисты, котроые могут посмотреть в чем ошибка? using System; using...

HtmlAgilityPack
Есть html код,использующий класс abcsd_aktive (к примеру), соответственно есть класс...

Как отправить простое письмо на E-Mail (mail.ru)
Привет, скажите как отправить письмо на определенный email ? Пользователь который отправляет...

Парсинг, HtmlAgilityPack
В общем давно хотел затронуть тему парсинга, сейчас появился повод... В общем полазил я по инету...

10
1 / 1 / 1
Регистрация: 31.01.2013
Сообщений: 32
21.08.2016, 18:59  [ТС] 2
Нет решения?
0
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
21.08.2016, 19:59 3
San163,
Может и я коряво это сделал, но пока выдает только это:
Ниже все href
Код
http://r.mail.ru/n201603556?sz=5&rnd=188622561
http://r.mail.ru/n215030482?sz=5&rnd=188622561
http://r.mail.ru/n201603557?sz=5&rnd=188622561
http://r.mail.ru/n165232870?sz=5&rnd=188622561
http://r.mail.ru/n215030483?sz=5&rnd=188622561
http://r.mail.ru/n77997578?sz=5&rnd=188622561
http://r.mail.ru/n211738067?sz=5&rnd=188622561
http://r.mail.ru/n77997580?sz=5&rnd=188622561
http://r.mail.ru/n201603558?sz=5&rnd=188622561
#
https://r.mail.ru/cls1074201/auth.mail.ru/cgi-bin/logout?next=1&lang=ru_RU&Page=
http://r.mail.ru/cls535096/r.mail.ru/clb1126011/e.mail.ru/signup?from=navi&lang=ru_RU&rnd=188622561
https://r.mail.ru/cls951827/e.mail.ru/login?lang=ru_RU
http://love.mail.ru/?
http://love.mail.ru/search.phtml?rl=1&from_item=1
http://love.mail.ru/rating/?from_item=2
http://love.mail.ru/questions/list.phtml?from_item=10
http://love.mail.ru/bbs/?from_item=3
http://love.mail.ru/app_platform/?from_item=4
http://love.mail.ru/diary/?from_item=8
http://love.mail.ru/mobile/?from_item=9
http://love.mail.ru/my/reg.phtml
/en/
/de/
/fr/
/es/
/it/
/ru/
/zn/
/ar/
/bg/
/gr/
/fi/
/hi/
/ja/
/pl/
/pt/
/ro/
/rs/
/sv/
/tr/
/id/
/ko/
/ms/
/th/
/vi/
http://love.mail.ru/support.phtml
http://love.mail.ru/tips/?tip=EnableCookie
http://love.mail.ru/tips/?tip=EnableJavaScript
http://love.mail.ru/tips/?tip=DisableAdblock
http://love.mail.ru/bbs/search.phtml


javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
http://love.mail.ru/my/reg.phtml
#
#
#
#
#
/tips/?tip=Conditions
#
#
#back
#done
http://love.mail.ru/tips/?tip=passwordrequest
http://social.wambacdn.net/login.phtml?action=oauth&need_confirm=1&partner_id=475306&domain_id=default&csrf_oauth_token=Z3E3WdE4JlQJZ0IoCWR4XERKabCkqQjv&oauth_new=1&provider=vkontakte
http://social.wambacdn.net/login.phtml?action=oauth&need_confirm=1&partner_id=475306&domain_id=default&csrf_oauth_token=Z3E3WdE4JlQJZ0IoCWR4XERKabCkqQjv&oauth_new=1&provider=facebook
http://social.wambacdn.net/login.phtml?action=oauth&need_confirm=1&partner_id=475306&domain_id=default&csrf_oauth_token=Z3E3WdE4JlQJZ0IoCWR4XERKabCkqQjv&oauth_new=1&provider=odnoklassniki
http://social.wambacdn.net/login.phtml?action=oauth&need_confirm=1&partner_id=475306&domain_id=default&csrf_oauth_token=Z3E3WdE4JlQJZ0IoCWR4XERKabCkqQjv&oauth_new=1&provider=mailru
http://social.wambacdn.net/login.phtml?action=oauth&need_confirm=1&partner_id=475306&domain_id=default&csrf_oauth_token=Z3E3WdE4JlQJZ0IoCWR4XERKabCkqQjv&oauth_new=1&provider=google
http://social.wambacdn.net/login.phtml?action=oauth&need_confirm=1&partner_id=475306&domain_id=default&csrf_oauth_token=Z3E3WdE4JlQJZ0IoCWR4XERKabCkqQjv&oauth_new=1&provider=yandex
/tips/?tip=Conditions
/bbs/?action=add
http://mail.ru/
http://corp.mail.ru/
http://sales.mail.ru/
http://m.love.mail.ru
https://play.google.com/store/apps/details?id=ru.mail.love
https://itunes.apple.com/app/apple-store/id736560238
http://love.mail.ru/feedback.phtml?
#
javascript:void(0);
http://top.mail.ru/jump?from=12470
#
Нужная часть:
Код
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
javascript:void(0);
1
46 / 38 / 26
Регистрация: 11.08.2016
Сообщений: 139
21.08.2016, 20:05 4
Не очень нужная часть, видимо Я тоже чуть покопал, там видать код генерируется на ходу скриптом, и сразу не отдается, можно, наверное, из того, что парсится (на скрине), парсить "aid" - это же и есть айдишник пользователя
1
1 / 1 / 1
Регистрация: 31.01.2013
Сообщений: 32
21.08.2016, 20:22  [ТС] 5
Нужную часть кода,у меня такая же получается
вот кусок кода
C#
1
2
3
4
5
6
7
8
9
   nodes = doc.DocumentNode.SelectNodes("//li[@class='tiles-item js-list-item']/div/a");
            List<string> photos = new List<string>();
 
            if (nodes == null)
             return;
            foreach (var item in nodes)
            {
                photos.Add(item.Attributes["href"].Value);
            }
Вопрос по теме- еще актуален,есть решение пишите.
Для себя сделал вывод : Буду чистить тот грязный код (

Или юзать мобаил версию и парсить json,в прочем это совевсем дургая история...

Добавлено через 3 минуты
@crackos
Не совсем вас понял,можно пример пжл (да aid есть ID , вы про тот что в скрипте лежит?Вроде его получается парсить,но с "грязью")
0
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
21.08.2016, 21:24 6
San163, кроме как в
Цитата Сообщение от San163 Посмотреть сообщение
скрипте
больше не где не додается id, попробовал несколькими аналогами htmlagilitypack доставать. Уже на стадии запроса - возвращает html без id в href.
Так что только это:
script
data: {"profile":{"aid":1665117148,"name":"Максим Максимов","age":26,"gender":"M","login":"mb1665117148","state":"active"},"userpi c":{"id":1665119047,"aid":1665117148,"square":"http:\/\/193.0.171.26\/84\/17\/11\/1665117148\/1665119047_square.jpg?hash=Fc1eoFAAtxiFcbmGXMy2OQ&expires=64060578000&updated=14 71803548","medium":"http:\/\/193.0.171.26\/84\/17\/11\/1665117148\/1665119047_medium.jpg?hash=dWlCI7Sv4edNyAz0XIRhOQ&expires=64060578000&updated=14 71803548","small":"http:\/\/193.0.171.26\/84\/17\/11\/1665117148\/1665119047_small.jpg?hash=JXD6q99vNjkH4QdzN_lFYw&expires=64060578000&updated=147 1803548","smallWithFace":"http:\/\/193.0.171.26\/84\/17\/11\/1665117148\/1665119047_small_face.jpg?hash=O__RbUmU0-4-nxwlcQWcWA&expires=64060578000&updated=1471803548","squareLarge":"http:\/\/193.0.171.26\/84\/17\/11\/1665117148\/1665119047_square_large.jpg?hash=4Xnsd7o9HaxqKopfANppPA&expires=64060578000&upda ted=1471803548","squareSmall":"http:\/\/193.0.171.26\/84\/17\/11\/1665117148\/1665119047_square_small.jpg?hash=5DXnQfALkdDdxadmZe8UCg&expires=64060578000&upda ted=1471803548","huge":"http:\/\/193.0.171.26\/84\/17\/11\/1665117148\/1665119047_huge.jpg?hash=XP91s1FJ95tH7EPLv2czYw&expires=64060578000&updated=1471 803548"},"photoCounters":{"total":1,"adult":0},"aid":1665117148,"name":"Максим Максимов","login":"mb1665117148","gender":"M","selfAge":26,"photo":"\/\/images.wambacdn.net\/images\/default2\/default\/photo_big_adult.png","location":"Беларусь, Гродно","lookFor":"девушку","lookForAge":"","isOnline":true,"onlineStatusText":" онлайн","isIntim":0,"anketaStatuses":{"real":{"isOn":true,"name":"real","statusC ode":1,"text":"Реальный пользователь","url":"promo\/realuser.phtml"},"geoCoords":{"isOn":true,"name":"geoCoords","statusCode":1,"tex t":"","url":""}},"theme":"Normal","noid":1665117148,"nchanged":1471803436,"nacti ve":0,"view_params":{"hit":10,"size":"huge","showInfoPlace":false,"showVipTriang le":true,"showUserFaceVipTooltip":true,"bottomGradient":true,"showCaptionLocatio n":true,"showCaptionNameAndAge":true}},

Или, всё-таки кто-то ответит))
1
1 / 1 / 1
Регистрация: 31.01.2013
Сообщений: 32
22.08.2016, 13:28  [ТС] 7
Можно как то спарсить aid из скрипта?(без регулярки)
0
46 / 38 / 26
Регистрация: 11.08.2016
Сообщений: 139
22.08.2016, 15:49 8
San163, топорно, но вроде работает
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
            
foreach (HtmlNode node in nodes)
            {
                string[] alltext = node.InnerText.Split(new char[]{ ':', ','});
                List<string> ids = new List<string>();
                for (int i=0; i<alltext.Length; i++)
                {
                    if (alltext[i].Contains("aid"))
                    {
                        ids.Add(alltext[i + 1]);
                    }
                }
                ids = ids.Distinct().ToList();
                foreach (string id in ids)
                {
                    count++;
                    RTB.AppendText(count + ". " + id + "\n");
                }
            }
2
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
22.08.2016, 18:54 9
San163, если верить этому:
If you trust the source, it looks to me like you'd be better off invoking the WebBrowser control. HtmlAgilityPack does not provide a scripting engine.

То js через htmlagilitypack не разобрать.

Добавлено через 41 минуту
San163,Доставал это:
Код
0
1635405639
1661620749
585343688
1567590773
1452294625
175902040
1665520227
1496270808
1665520153
1665469237
1665519967
1665519959
1665519877
116306980
1665519771
1662795274
1583635376
1665519546
1660849188
1665519300
1657504353
1665519111
1605885770
1665518973
1635405639
0
Как-то так:
C#
1
2
3
4
5
var script = string.Join("\n", doc.DocumentNode.Descendants()
                                         .Where(n => n.Name == "script")
                                         .Select(a=>a.InnerText)
                                         .Where(h=>h.Contains("aid"))
                                         .Select(s=>new string(s.Skip(s.IndexOf("aid") + 5).TakeWhile(c=>c!=',').ToArray())));
Но как-то уж слишком )), думаю будут ошибки. Наверное достав скрипт - лучше найти способ для парсинга скрипта...

Добавлено через 47 секунд
C#
1
2
HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(html);
3
46 / 38 / 26
Регистрация: 11.08.2016
Сообщений: 139
22.08.2016, 18:55 10
EveKS, а я не сообразил, как через linq сделать
0
EveKS
22.08.2016, 19:09     Парсер love.mail.ru (htmlagilitypack)
  #11

Не по теме:

crackos, я недавно через HtmlAgilityPack пытался перевести 115 тыс русских слов =)). Немного полазил по сайтам...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2016, 19:09

HtmlAgilityPack шалит
Здравствуйте. Как-то странно ведет себя HtmlAgilityPack, или я дурак. У меня переберется список...

Парсинг сайта htmlagilitypack
Добрый день! XPath копирую из кода html Консоль выдает null Что с кодом не так? ...

Парсинг сайта, HtmlAgilityPack
Использую HtmlAgilityPack, чтобы считать информацию с сайта string rate =...

Подключение библиотеки HtmlAgilityPack
Скачал Html Agility Pack от сюда http://htmlagilitypack.codeplex.com/ , добавил ссылку на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru