Обновление парсера

Модератор: Модераторы

Обновление парсера

Сообщение Ichthyander » 28.08.2013 14:23:34

Требуется доработать функцию парсера вордстата Яндекса. Кардинально изменилась выдача. Программа само собой перестала работать. Вот здесь идет обсуждения нового алгоритма и разбор того как это реализуется на PHP. Собственно задача доработать функцию парсинга данных.
Вот кусочек кода, который ранее отвечал за парсинг Яндекс.вордстата:
Код: Выделить всё
function TYandexThread.Request: boolean;
var
  AValueString: string;
  APos: integer;
  TempUrl: String;
begin
  FSecondNumber := rcNotRequested;
  URL := URLTemplate;

  Result := False;
  FHTTP.Clear;
  FResponse.Clear;
  if FRandomUserAgent then
    FHTTP.UserAgent :=
      RandomizeUserAgent;
  FHTTP.Timeout     := 10000;

  FRequestCode := rcErrNotAccess;

  TempUrl:='http://kiks.yandex.ru/su/';
  repeat
//    FHTTP.Clear;
    Result:=FHTTP.HTTPMethod('GET', TempUrl);
    {if Result and (FHTTP.ResultCode=302) then
    begin
      TempUrl:=Trim(ExtractHeaderValue(FHTTP.Headers, 'Location'));
      if TempUrl='' then
        Result:=False;
    end;}
  until True{(not Result) or (FHTTP.ResultCode<>302)};
  if Result then
  begin
{    FHTTP.Headers.SaveToFile('Header_kiks.txt');
    FHTTP.Cookies.SaveToFile('Cookies_kiks.txt');
    FHTTP.Document.SaveToFile('Document_kiks.txt');  }
    URL := ReplaceString(URL, '%KW%', EncodeURLElement(KeyWord));
    FHTTP.Clear;
    FResponse.Clear;
    if FHTTP.HTTPMethod('GET', URL) then
    begin
      //      FHTTP.Headers.SaveToFile('Header_'+KeyWord+'.txt');
      //      FHTTP.Cookies.SaveToFile('Cookies_'+KeyWord+'.txt');
      FResponse.LoadFromStream(FHTTP.Document);
      FRequestCode := rcErrNotRecogn;
      Result := inherited Request;
    end;
    //  FHTTP.Cookies.Clear;
  end;

  if Result then
  begin
    FSecondNumber := rcErrNotRecogn;
    APos := 1;
//    FResponse.SaveToFile('Document_Body.html');
    if ExtractBetweenKeys(FResponse.Text, '&nbsp;—&nbsp;',
      '&nbsp;показ', APos, AValueString) then
    begin
      if TryStrToInt(AValueString, FRequestCode) then
      begin
        Result := True;
        FSecondNumber := 0;
        APos   := 1;
        if ExtractBetweenKeys(FResponse.Text, '<td class="align-right-td">',
          '</td>', APos, AValueString) then
          TryStrToInt(AValueString, FSecondNumber);
      end;
    end;
  end;
end;

Для работы с сетью используется библиотека Synapse
Цена и сроки?
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 675
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Обновление парсера

Сообщение amateur » 04.09.2013 21:05:11

извиняюсь за не скромный вопрос...

Решение найдено?
Аватара пользователя
amateur
энтузиаст
 
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: Обновление парсера

Сообщение Ichthyander » 04.09.2013 21:26:15

Нет, не занимался этим. Думаю на бирже фриланса разместить. Готовы взяться?
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 675
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Обновление парсера

Сообщение amateur » 04.09.2013 21:57:10

Готовы взяться?
куки то может всякий вытянуть :lol:
Аватара пользователя
amateur
энтузиаст
 
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: Обновление парсера

Сообщение Ichthyander » 04.09.2013 22:06:23

amateur писал(а):куки то может всякий вытянуть :lol:

Я не вникал в новый алгоритм, но дело там, как минимум, не только в куки. Написал в личку
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 675
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Обновление парсера

Сообщение amateur » 04.09.2013 22:20:21

там ЖАБА :) Большая и жирная - синапс и похожие не того поля - ягоды. Они могут только взять и отдать, а вот что они берут и отдают им не интересно.

Я не вникал в новый алгоритм
увеличить скорость работы стата, "обламав" парсеров :twisted:
Аватара пользователя
amateur
энтузиаст
 
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: Обновление парсера

Сообщение Ichthyander » 04.09.2013 22:33:38

увеличить скорость работы стата, "обламав" парсеров

Это да... С одной стороны Яндекс правильно конечно делает, с другой стороны многим не хочется вручную вбивать все это дело, когда ключевиков для анализа много. А API от Яндекса имеет ограничения серьезные, да и там нужно будет вникать и заново почти писать программу
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 675
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Обновление парсера

Сообщение amateur » 04.09.2013 23:47:21

Простенький пример http://dfiles.ru/files/yosnhnkys - SHDocVwP.lpk брал с форума. Надеюсь html усе прочитать могут :)
Аватара пользователя
amateur
энтузиаст
 
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32


Вернуться в Помощь за вознаграждение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru