none
Как автоматизировать поиск заданной информации на заданном сайте? RRS feed

  • Вопрос

  • Хотелось бы с определенной периодичностью проверять наличие заданного товара на заданном сайте и получать сообщение об удачном поиске в случае наличия товара. Приведу пример конкретных задач:
    1. Поиск определенной книги на сайте www.findbook.ru. Сейчас я захожу на сайт, в поля формы Название книги и(или) Автор ввожу нужную информацию, получаю результат и его анализирую. Хотелось бы этот процесс автоматизировать.
    2. Поиск нужного билета на сайте РЖД. Ввожу в полях откуда и куда нужные данные, дату, номер поезда и др.информацию. Получаю результат и его анализирую. Хотелось бы этот процесс автоматизировать.
    Наверное, подобного рода задач достаточно много. Реально ли автоматизировать задачи такого рода?

    Alex

Ответы

  • Добрый день.

    Вы можете работать со страницами через компонент WebBrowser. Например, я накидал WinForms приложение, в котором на форме размещен указанный компонент. Ну и вот такой код:

    public Form1()
    {
        InitializeComponent();
        Load += new EventHandler(Form1_Load);
    }
    
    void Form1_Load(object sender, EventArgs e)
    {
        webBrowser1.Navigate("http://ya.ru");
        webBrowser1.Navigated += new WebBrowserNavigatedEventHandler(webBrowser1_Navigated);
    }
    
    void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
    {
        webBrowser1.Navigated -= new WebBrowserNavigatedEventHandler(webBrowser1_Navigated);
        this.BeginInvoke((Action)(() =>
            {   
                webBrowser1.Document.GetElementById("text").SetAttribute("value", "текст запроса");
                var collection = webBrowser1.Document.GetElementsByTagName("input");
                collection[2].InvokeMember("click");
            }));
    }

    Соответственно, у меня запускается приложение, загружается ya.ru происходит ввод текста запроса и автоматический клик по кнопке поиска. а открывшейся странице можно по аналогичной схеме искать элементы, получать значения их атрибутов и т.д.
    Отвечающий

Все ответы

  • Возможно данные сайты предоставляют открытые API для получения желаемой информации. Если нет, тогда только хаком. Анализировать страницу, посмотреть что куда и как отправляется. Потом пытаться воспроизвести запрос.
    Модератор
  • Добрый день.

    Вы можете работать со страницами через компонент WebBrowser. Например, я накидал WinForms приложение, в котором на форме размещен указанный компонент. Ну и вот такой код:

    public Form1()
    {
        InitializeComponent();
        Load += new EventHandler(Form1_Load);
    }
    
    void Form1_Load(object sender, EventArgs e)
    {
        webBrowser1.Navigate("http://ya.ru");
        webBrowser1.Navigated += new WebBrowserNavigatedEventHandler(webBrowser1_Navigated);
    }
    
    void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
    {
        webBrowser1.Navigated -= new WebBrowserNavigatedEventHandler(webBrowser1_Navigated);
        this.BeginInvoke((Action)(() =>
            {   
                webBrowser1.Document.GetElementById("text").SetAttribute("value", "текст запроса");
                var collection = webBrowser1.Document.GetElementsByTagName("input");
                collection[2].InvokeMember("click");
            }));
    }

    Соответственно, у меня запускается приложение, загружается ya.ru происходит ввод текста запроса и автоматический клик по кнопке поиска. а открывшейся странице можно по аналогичной схеме искать элементы, получать значения их атрибутов и т.д.
    Отвечающий
  • Спасибо большое за ответы, попробую. Не знал, что есть такой замечательный элемент wevBrowser  с такими возможностями

    Alex