Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Программно нажать на кнопку web страницы / 25 сообщений из 31, страница 1 из 2
14.08.2017, 10:32
    #39504812
Bujhm_C
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Есть сайт, к примеру на странице https://prozorro.gov.ua/tender/search/?query=ВП ЮУАЕС ДП НАЕК "Енергоатом" есть внизу кнопка " показать больше результатов ".
Внимание, вопрос!
Как программно нажать на эту кнопку (c# или vb.net).
Или, если задать вопрос по другому. Чтобы распастить данные, как отобразить все данные по всем страницам.
Спасибо, за помощь.
...
Рейтинг: 0 / 0
14.08.2017, 11:58
    #39504870
maxim111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Bujhm_C,

Я в таких случаях использую selenium
...
Рейтинг: 0 / 0
14.08.2017, 13:30
    #39504949
Bujhm_C
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Selenium? Вообще не знаком.
А более изящный способ, стандартными компонентами Studio как победить?
Есть варианты?
...
Рейтинг: 0 / 0
14.08.2017, 13:34
    #39504952
maxim111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Bujhm_C,

Можно webbrowser использовать, это из стандартных. Приведите пример как пробуете вы. Что не получается?
...
Рейтинг: 0 / 0
14.08.2017, 14:07
    #39504965
Bujhm_C
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Вот часть кода, если это поможет для разбирательства

Код: vbnet
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.
Private Function AcquireHTML(address As String) As String
        Dim request As HttpWebRequest
        Dim response As HttpWebResponse = Nothing
        Dim reader As StreamReader
        Dim sbSource As StringBuilder

        Try
            ' Create and initialize the web request
            request = TryCast(System.Net.WebRequest.Create(address), HttpWebRequest)
            request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1)"
            request.KeepAlive = False
            request.Timeout = 5 * 1000
            ' Get response
            response = TryCast(request.GetResponse(), HttpWebResponse)
            If request.HaveResponse = True AndAlso response IsNot Nothing Then
                ' Get the response stream
                reader = New StreamReader(response.GetResponseStream())
                ' Read it into a StringBuilder
                sbSource = New StringBuilder(reader.ReadToEnd())
                response.Close()
                '  
                ' Console application output
                Return sbSource.ToString()
            Else
                Return ""
            End If
            reader.Close()

        Catch ex As Exception

            response.Close()
            Return ""
        End Try
    End Function



' Затем я извлекаю данные с помощью функций

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 Private Function GetTitle(strIn As String) As String

        Dim collection As MatchCollection = Regex.Matches(strIn, "<title>([^<]*)</title>", RegexOptions.IgnoreCase Or RegexOptions.Multiline)
        For Each m As Match In collection
            If m.Value.IndexOf("<title>") >= 0 Then
                Dim intStart As Integer = m.Value.IndexOf("<title>")
                Dim intEnd As Integer = m.Value.LastIndexOf("</title>")
                Return m.Value.Substring(intStart + 7, intEnd - intStart - 7)
            End If
        Next
        Return ""
    End Function



Но все это касается текущей страницы, чтобы "стянуть" данные со следующей страницы, необходимо нажать эту злополучную кнопку "показать больше данных". Вот тут я и застрял. Задача еще усугубляется тем, что нажать на кнопку нужно столько раз, чтобы достичь конца всех страниц. Есть предложения?
...
Рейтинг: 0 / 0
14.08.2017, 14:31
    #39504979
netfrog
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Может попросить нужные данные у админов этого сайта? Вдруг дадут.
...
Рейтинг: 0 / 0
14.08.2017, 14:43
    #39504992
Bujhm_C
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Я не лишен чувства юмора, но тут ветка другая.
А предложение дельное. Можно и бабок попросить.
...
Рейтинг: 0 / 0
14.08.2017, 17:59
    #39505183
Juk2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Bujhm_CЯ не лишен чувства юмора, но тут ветка другая.
А предложение дельное. Можно и бабок попросить.

тебеж написали
про веббравзер
...
Рейтинг: 0 / 0
14.08.2017, 18:23
    #39505211
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
кнопка которая раскрывает список вызывает JS метод, который выполняет "дозагрузку".
Через HttpWebRequest\WebClient сделать это невозможно, так как они не умеет выполнять JS скипты, это дело браузеров.
Если существует такая кнопка, значит существует API через который эти дополнительные данные загружаются.
Обычно это какой то REST или SOAP сервис, к которому обращается скрипт.
Каким образом он это делает и что в результате получает, можно посмотреть в любом браузере через панель разработчика, если будет ссылка на сайт, с которого вы берёте данные, можно будет сказать как это сделать.

Тут еще остро стоит вопрос о том, на сколько правомерны ваши действия. Ведь та информация которые вы парсите вам не пренадлежит, а автор возможно не давал вам согласие на её использование.
...
Рейтинг: 0 / 0
14.08.2017, 18:43
    #39505226
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Ботов для игр лучше писать на autofit
...
Рейтинг: 0 / 0
14.08.2017, 18:47
    #39505230
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Cat2Ботов для игр лучше писать на autofit
а кнопки давить посредством PhantomJS
...
Рейтинг: 0 / 0
15.08.2017, 07:10
    #39505349
Bujhm_C
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
авторТут еще остро стоит вопрос о том, на сколько правомерны ваши действия. Ведь та информация которые вы парсите вам не пренадлежит, а автор возможно не давал вам согласие на её использование.
Тут пожалуйста по подробнее.
А какую статью закона я нарушаю парся инфу открытого доступа. Я не взламываю пароли, не вношу изменения в БД и т.д. Так, что противозаконность моих действий очень даже не очевидна.
...
Рейтинг: 0 / 0
15.08.2017, 08:02
    #39505361
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Bujhm_Cна странице https://prozorro.gov.ua/tender/search/?query=ВП ЮУАЕС ДП НАЕК "Енергоатом"
Сходил по ссылке. Там есть API для разработчиков, но все равно надо давить на кнопку?
...
Рейтинг: 0 / 0
15.08.2017, 09:46
    #39505420
Bujhm_C
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
автор но все равно надо давить на кнопку?
Да нет же. Мне совсем не надо на нее давить (на кнопку). Мне нужно развернуть все страницы, чтобы распастить по тегам!
Если бы в командной строке был адрес следующей станицы, я бы эту задачу решил, пробежавшись циклом.
...
Рейтинг: 0 / 0
15.08.2017, 09:59
    #39505431
Bujhm_C
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
авторТам есть API для разработчиков
Если я правильно понял, рыть нужно здесь...
-просмотр кода HTML страницы.

516
Код: html
1.
2.
3.
4.
5.
   <button class="show-more" data-start="10">Показати більше результатів 11 — 20 з 1 773</button>
    
									</div>
			</div>
		</div>



Вопрос прямой- как открыть станицы с 1 по 773?
...
Рейтинг: 0 / 0
15.08.2017, 10:06
    #39505436
Bujhm_C
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
авторесли будет ссылка на сайт, с которого вы берёте данные, можно будет сказать как это сделать.

Так вот же она
https://prozorro.gov.ua/tender/search/?query=ВП ЮУАЕС ДП НАЕК "Енергоатом
...
Рейтинг: 0 / 0
15.08.2017, 10:10
    #39505438
Bujhm_C
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
В начале поста правильная ссылка
...
Рейтинг: 0 / 0
15.08.2017, 10:44
    #39505463
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Bujhm_CавторТам есть API для разработчиков
Если я правильно понял, рыть нужно здесь...
-просмотр кода HTML страницы.

516
Код: html
1.
2.
3.
4.
5.
   <button class="show-more" data-start="10">Показати більше результатів 11 — 20 з 1 773</button>
    
									</div>
			</div>
		</div>



Вопрос прямой- как открыть станицы с 1 по 773?
Неправильно ты понял. API делают как-раз для того чтобы HTML не парсить, т.е. просто посылаешь запрос нужной инфы и получаешь ответ в готовом виде, без всякого излишества в виде форматированного HTML и прочей навигации.

У меня тот сайт не открывается: "500 Server Error" пишет. Читай что там разработчики API предлагают.
...
Рейтинг: 0 / 0
15.08.2017, 11:52
    #39505493
Bujhm_C
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
авторУ меня тот сайт не открывается: "500 Server Error" пишет. Читай что там разработчики API предлагают.

Вот рабочая ссылка:

https://prozorro.gov.ua/tender/search/?query=ВП ЮУАЕС ДП НАЕК "Енергоатом"
...
Рейтинг: 0 / 0
15.08.2017, 19:35
    #39505927
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
По сабжу. Прекрасно себе кнопочки нажиматся на VBScript и JScript (не путать с javascrpt).
тынц .
...
Рейтинг: 0 / 0
15.08.2017, 20:22
    #39505933
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Dima TНеправильно ты понял. API делают как-раз для того чтобы HTML не парсить, т.е. просто посылаешь запрос нужной инфы и получаешь ответ в готовом виде, без всякого излишества в виде форматированного HTML и прочей навигации.
+1

http://api-docs.openprocurement.org/uk_UA/latest/tutorial.html#tutorial
...
Рейтинг: 0 / 0
15.08.2017, 20:23
    #39505935
Pu4koff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Так вот же описание API: http://api-docs.openprocurement.org/uk_UA/latest/
там только на птичьем языке, непонятно есть нужные функции или там API для размещения тендеров, а не их поиска.
...
Рейтинг: 0 / 0
15.08.2017, 20:34
    #39505939
Pu4koff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Если прямо на кнопку нужно жать, то там по урлу https://prozorro.gov.ua/tender/form/search отправляется Post запрос:
Код: c#
1.
query%5B%5D=query%3D%D0%92%D0%9F+%D0%AE%D0%A3%D0%90%D0%95%D0%A1+%D0%94%D0%9F+%D0%9D%D0%90%D0%95%D0%9A+%22%D0%95%D0%BD%D0%B5%D1%80%D0%B3%D0%BE%D0%B0%D1%82%D0%BE%D0%BC%22&start=10


волнует собственно параметр start. Это что-то вроде: начинать с 10 элемента. Следующая кнопка будет с start=20.
нужно смотреть там может куки еще важны какие или реферал или еще к чему привязываются.
Возвращается json вида:
Код: c#
1.
2.
3.
4.
5.
{
"search_type":"tender",
"total":1777, // вероятно общее число тендеров по запросу
"html": кусок html кода, который просто вставляется на страницу,
"highlight":["ВП ЮУАЕС ДП НАЕК \"Енергоатом\""]}


итого можно просто слать post-запросы и каждую страницу отдельно парсить или же собирать одну огромную страницу и её разбирать.
...
Рейтинг: 0 / 0
15.08.2017, 21:39
    #39505962
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Pu4koffТак вот же описание API: http://api-docs.openprocurement.org/uk_UA/latest/
там только на птичьем языке, непонятно есть нужные функции или там API для размещения тендеров, а не их поиска.
Мову не врозумляшь? Так там есть по английски вроде
...
Рейтинг: 0 / 0
16.08.2017, 07:07
    #39506017
Pu4koff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно нажать на кнопку web страницы
Cat2Pu4koffТак вот же описание API: http://api-docs.openprocurement.org/uk_UA/latest/
там только на птичьем языке, непонятно есть нужные функции или там API для размещения тендеров, а не их поиска.
Мову не врозумляшь? Так там есть по английски вроде
Чего-то изначально на англицком API не нашел (когда на главной странице переключил на английский, то куда-то убежали ссылки). Вручную урл поменял, оказывается на буржуйском тоже есть: http://api-docs.openprocurement.org/en/
только там про поиск не нашёл. только перебор всех тендеров вроде есть.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Программно нажать на кнопку web страницы / 25 сообщений из 31, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]