0 / 0 / 0
Регистрация: 28.04.2014
Сообщений: 6
1

С сайта объявлений нужно распарсить номера продавцов

22.05.2014, 23:58. Показов 1228. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята, нужна ваша помощь!
С известного сайта объявлений нужно вытянуть номера продавцов.
Но он выводится как картинка. Посоветовали парсить мобильную версию.
Но на ней , чтобы увидеть номер, нужно нажать кнопку. Вообщем, все данные вытащить смог кроме
этих. Может вопрос покажется глупым, поэтому заранее прошу извинения. Подскажите варианты. Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2014, 23:58
Ответы с готовыми решениями:

Нужен готовый движок для сайта, с данными возможностями: Форум, чат, доски объявлений + возможность обычного сайта информации
Нужен готовый движок для сайта, с данными возможностями: Форум, чат, доски объявлений + возможность...

Работа с curl, нужно вывести номера домов с сайта ЖКХ, с улицами получилось но с домами никак. ХЕЛП
Помогите вывести дома желательно еще и квартиры. <?php $url =...

Шаблоны простенького сайта объявлений
подскажите пожалуйста ресурс где можно бесплатно скачать шаблон простенького сайта для того чтобы...

Выбор движка для сайта объявлений
Хочу сделать сайт, где можно будет подавать объявления. Какой движок посоветуете?

6
3582 / 2192 / 692
Регистрация: 29.05.2013
Сообщений: 9,358
23.05.2014, 00:31 2
Это зависит от того, в каком виде вам возвращаются данные. Если это текстовые данные завернутые в htm-код, то проблем особых не должно быть, но вот если это картинка завернутая в htm-код, то вот тут уже не парсинг, а совсем другая задача будет.
Для начала, зайдите на сайт с объявлениями и сохраните страницу а затем откройте ее с помощью любого текстового редактора, или с помощью команды "Исходный код", если ваш браузер имеет такую функцию. Если вы увидите текст вашего объявления в таком коде, значит у вас вариант 1. А вот если там такого текста нет, то тут либо вариант 2, либо реализована система ссылок с целью защиты от подобного парсинга.
0
0 / 0 / 0
Регистрация: 28.04.2014
Сообщений: 6
23.05.2014, 01:24  [ТС] 3
текст объявления я достал, а вот номер - ссылка. Как ее достать?

Добавлено через 4 минуты
Как программно нажать кнопку на сайте? Как вытащить номер телефона с jpeg? Парсер пишу в делфи.
0
3582 / 2192 / 692
Регистрация: 29.05.2013
Сообщений: 9,358
23.05.2014, 01:24 4
Если ссылка, значит делать дополнительный запрос по ссылке и снова парсить результат.
0
0 / 0 / 0
Регистрация: 28.04.2014
Сообщений: 6
23.05.2014, 01:47  [ТС] 5
Вот пятиминутный пример говнокода (для примера)
Delphi
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdHTTP, Vcl.StdCtrls, IdAntiFreezeBase,
  Vcl.IdAntiFreeze, RegExpr;
 
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    Button2: TButton;
    Memo2: TMemo;
    IdHTTP1: TIdHTTP;
    IdAntiFreeze1: TIdAntiFreeze;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
  St, St1, St2, St3, St4, St5, St6: string;
  r: TRegExpr;
  p: string;
  i: string;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    St := IdHTTP1.Get(Edit1.Text);
    St1 := St;
    St3 := St;
    St2 := St;
    St4 := St;
    St5 := St;
    St6 := St;
 
    // id
    Delete(St, 1, pos('<div class="date">', St) -
      length('<div class=" date" ') + 5);
    Delete(St, pos('"> ', St), length(St));
    Memo1.Lines.Insert(0, St);
    // дата
    Delete(St1, 1, pos('<div class="date">', St1) +
      length('<div class="date"> '));
    Delete(St1, pos('<', St1), length(St1) - 1);
    Memo1.Lines.Insert(1, St1);
 
    // время
    Delete(St2, 1, pos('<span class="time">', St2) +
      length('<span class="time"> ') - 2);
    Delete(St2, pos('<', St2), length(St2));
    Memo1.Lines.Insert(2, St2);
    // квадратура, этаж
    Delete(St3, 1, pos('</a> </h3>', St3) - length('</a> </h3>') - 21);
    Delete(St3, pos('<', St3), length(St3));
    Memo1.Lines.Insert(3, St3);
    // адрес
    Delete(St4, 1, pos('<p class="address fader">', St4) +
      length('<p class="address fader">') - 1);
    Delete(St4, pos('<', St4), length(St4) - 1);
    Memo1.Lines.Insert(4, St4);
    // цена
    Delete(St5, 1, pos('<div class="about">', St5) +
      length('<div class="about">') + 8);
    Delete(St5, pos('</', St5), length(St5));
    Memo1.Lines.Insert(5, St5);
    r := TRegExpr.Create;
    r.InputString := Memo1.Lines[5];
    r.Expression := ('\d');
    if r.Exec(Memo1.Lines[5]) then // Если найдено совпадение в memo1, то
      repeat
        Memo2.Lines.add(r.Match[0]); // добавляем в Memo2 строку с совпадением
      until not r.ExecNext;
    p := Memo2.Lines[0] + Memo2.Lines[1] + Memo2.Lines[2] + Memo2.Lines[3] +
      Memo2.Lines[4] + Memo2.Lines[5] + Memo2.Lines[6] + Memo2.Lines[7] +
      Memo2.Lines[8] + Memo2.Lines[9];
    Memo1.Lines.Insert(5, p);
    Memo2.Clear;
    Memo1.Lines.Delete(6);
    // и так пока не закончатся совпадения (reg.NextExec - следующее совпадение)
  except
    on e: Exception do
  end;
 
  //агенство или частное лицо
  Delete(St6, 1, pos('<div class="data">', St6) +
    length('<div class="data">') + 12);
  Delete(St6, pos('<', St6), length(St6));
  Memo1.Lines.Insert(6, St6);
 
end;
 
end.


Если можно, покажите пример перехода по ссылке

Добавлено через 14 минут
Вот пример кода блока


HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<div class="item c-b-2 premium" id="i272730578"> <div class="date">
 Вчера
 <span class="time">14:26</span> </div>
 
 <div class="b-photo b-photo-m">
   
 <a class="photo-wrapper" href="/smolensk/kvartiry/3-k_kvartira_56_m_55_et._272730578" title="Объявление &laquo;3-к квартира, 56 м², 5/5 эт.&raquo; (7 фотографий)">
  <img src="//40.img.avito.st/140x105/646496540.jpg" class="photo-count-show" alt="3-к квартира, 56 м², 5/5 эт." />
  <i class="i i-photo">7</i> </a>
    </div> <div class="description"> <h3 class="title"> <a  href="/smolensk/kvartiry/3-k_kvartira_56_m_55_et._272730578" title="3-к квартира, 56 м², 5/5 эт. в Смоленске">
 3-к квартира, 56 м², 5/5 эт.</a> </h3>
  <div class="about">
  <span>1&nbsp;950&nbsp;000</span> <span>руб.</span>
    </div>
    <p class="address fader">
 р-н Промышленный, ул.Шевченко д.76 </p>
 
 <div class="data">
   <p>
     Агентство
    </p>
Как перейти программно по ссылке href="/smolensk/kvartiry/3-k_kvartira_56_m_55_et._272730578" , собрать данные и вернуться назад, чтобы открыть другой блок?
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
23.05.2014, 06:04 6
Цитата Сообщение от alexapod Посмотреть сообщение
Как программно нажать кнопку на сайте?
Парсинг от А до Я
Блог о программировании парсеров и web-автоматизации
0
0 / 0 / 0
Регистрация: 28.04.2014
Сообщений: 6
23.05.2014, 11:35  [ТС] 7
Спасибо за ссылку, вроде заработало. Но только через мобильную версию . Как из jpeg вытащить номер еще не разобрался (уже и не надо вроде, но спортивный интерес остался).
0
23.05.2014, 11:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2014, 11:35
Помогаю со студенческими работами здесь

База телефонных номеров с сайта объявлений
Здравствуйте! Ув. программисты!!!! У меня к Вам такой вопрос... Может это будет звучать тупо, но...

adsense'сы, директы для сайта объявлений
Дарова. Хочу разместить объявления о сайте (сайт объявлений) на Яндухе и Гугле + поставить...

Распарсить страницу сайта
Всем привет. Главная страница сайта имеет расширение aspx. При этом если переходить по другим...

Распарсить строку с сайта
Сообщение Test выводит. А вот сам текст не выводит. Что делать? Строка выглядит так: &lt;div...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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