|
0 / 0 / 2
Регистрация: 09.09.2013
Сообщений: 32
|
|
Парсинг динамически изменяющихся Web страниц10.10.2013, 12:12. Показов 12916. Ответов 43
Метки нет (Все метки)
Всем привет.
Пишу проект, в котором требуется выгружать в БД со страницы сайта некоторый набор динамически изменяющихся полей (т.е. их зависимость от времени). Есть реализация с периодическим извлечением текущих значений через WebBrowser.Document, однако не устраивает скорость работы - IE даже и сам по себе довольно медленно отрабатывает изменения наполнения страницы. Курил форум по CefSharp, но не смог оттуда почерпнуть того, что требуется. Если кто-то решал подобную задачу, например с использованием Chromium или Gecko, поделитесь пожалуйста опытом. Буду очень признателен за выложенный скелет проекта.
0
|
|
| 10.10.2013, 12:12 | |
|
Ответы с готовыми решениями:
43
Парсинг web страниц, загруженных в WebBrowser Парсинг web-страниц Как динамически изменять высоту TableView при изменяющихся высотах CustomViewCell |
|
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
|
|
| 10.10.2013, 12:15 | |
|
Selenium + phantomjs
1
|
|
|
0 / 0 / 2
Регистрация: 09.09.2013
Сообщений: 32
|
||
| 10.10.2013, 13:41 [ТС] | ||
|
Не хотелось бы погружаться в изучение совершенно новых для меня технологий без всякой гарантии на результат. А нельзя ли все-таки средствами C#?
0
|
||
|
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
|
| 10.10.2013, 13:54 | |
|
а вам обязательно показывать сам браузер? можно же через webClient грузить страницу и делать с html что нужно. Если грамотно распараллелить всё это, то ничего тормозить не будет
1
|
|
|
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
|
|
| 10.10.2013, 14:15 | |
|
0
|
|
|
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
|
|
| 10.10.2013, 14:19 | |
|
Попробуй post запросами обновлять отправляя в нужное для тебя время сам запрос
1
|
|
|
0 / 0 / 2
Регистрация: 09.09.2013
Сообщений: 32
|
|||
| 10.10.2013, 19:18 [ТС] | |||
|
И самое главное, совсем не обязательно, что что-то из этого выйдет Так что наверное попробую, спасибо за совет Правда у меня там в планах еще программный ввод данных в поля и кликанье по кнопкам. Насколько я понимаю, WebClient этого делать не умеет? Тогда придется окно WebBrowser'a для этой цели сохранить... Добавлено через 4 часа 31 минуту Нет, не подходит WebClient в данном случае. Проблема в том, что событие DownloadStringCompleted совсем не означает, что динамическое содержание страницы уже загружено. Получается то же самое, о чем я писал в своей первой теме И снова про код HTML страницы. Так что, выходит без браузера не обойтись, просто браузер должен быть более шустрым. А потому возвращаюсь к исходному вопросу. Неужели никто не решал такую задачу? (и все-таки желательно средствами C#)
0
|
|||
|
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
|
|
| 10.10.2013, 19:50 | |
|
Я тебе уде сказал, post-запросами, get=запросом грузи страничку постами получай динамически загружаемое содержимое, нужет только компонент idHTTP незнаю только есть он в C# в Delphi есть такой, в С такой аналогичный должен быть.
0
|
|
|
0 / 0 / 2
Регистрация: 09.09.2013
Сообщений: 32
|
||
| 10.10.2013, 21:07 [ТС] | ||
|
но это не помогает, т.к. момент, когда содержимое уже загружено, неизвестен. Мне что, вызывать его 1000 раз пока не увижу, что уже все ok? При работе с WebBrowser.Document это можно себе позволить (просто проверяю текущее значение нужных мне нод), т.к. в этом случае нет дополнительного обращения к серверу сайта. А если я стану 1000 раз постить меня через 10 минут забанят. Вы, видимо, просто не очень представляете себе о чем идет речь. Попробуйте вашим методом (хоша бы и на Delphi) загрузить все счета со страницы http://www.soccer24.com/englan... e/results/
0
|
||
|
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
|
|
| 10.10.2013, 21:30 | |
|
Зачем тебе это знать, страницу даже можно и не загружать. а сразу отправить пост запрос на получение динамического сожержимого. да и если ты так загрузиш страницу, то содержимое это не загрузиться без отправки этого поста. И ненужно вызывать его 1000 раз. Чуть позже будет время, попробую.
0
|
|
|
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
|
|
| 10.10.2013, 22:58 | |
|
Когда-то я парсил сайт zakupki.gov.ru.
Там контент появлялся только после клика на картинку в результате выполнения JS. И там ещё задержки были в этих JS, секунд по 10. Этот контент, насколько я тогда понял, появлялся только в результате выполнения скрипта в браузере, когда я программно делал Clic на картинке, или на тексте, завёрнутом в DIV определённого класса, то есть без браузера было никак не получить контент. Тем не менее, программа успевала собирать данные быстрее, чем они появлялись. Есть в этом деле ещё один прикол, который я встретил на других сайтах. Подобные сайты обычно отслеживают частые обращения с одного IP адреса, и через некоторое (очень небольшое время) банят IP, на все вопросы с которого начинают денег просить. Поэтому приходилось вводить рандомные таймауты на обращения к сайту, изображая поведение человека. На некоторых сайтах это помогало, но не на всех. Иногда приходилось менять IP, с которого велось сканирование. Так что на самых интересных сайтах за скоростью гнаться особо не приходилось. А если сайт был не защищён от ddos и данные на нём были в виде просто текста, мой заказчик выкачивал весь сайт какой-то линуксовой тулзой, и я просто парсил htmlки как текст, без браузера. Это работает довольно быстро. По поводу "скедета" программы для обхода сайтов с помощью браузера - я реализовал MDI приложение, каждый документ - браузер, который обходит дерево ссылок сайта, удовлетворяющих заданному фильтру, накладываемому на URL. Выложить исходник нельзя, таков уговор с заказчиком.
1
|
|
| 10.10.2013, 23:23 | |
|
Угу. Не вижу проблем с задержкой. Использование броузера будет простейшим вариантом. Я так парсил сайты типа www.188bet.com (Screenshots)
0
|
|
|
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
|
|
| 10.10.2013, 23:50 | |
|
Браузер та же программа, что может читать с сайта, а вы своими программами почему то нет?
0
|
|
|
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
|
|
| 11.10.2013, 00:22 | |
|
Все равно все данные отправляются и получаются через браузер, то же самое можно сделать и в программе
0
|
|
|
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
|
|
| 11.10.2013, 00:27 | |
|
Для того, чтобы сформировать запрос надо исполнить обфусцированный скрипт. Я сомневаюсь, что было бы эффективным делать это в программе.
0
|
|
|
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
|
|
| 11.10.2013, 00:45 | |
|
Вот спарсил таблицу со странице по ссылке в ней имеются такие данные ихе еще только еще надо привести в читабельный вид и выделить нужные. Сдесь только 2 строки я показал.
KtcCSrQn 1381071600 3 3 Tottenham TOT Tottenham 0 0 0 team WES West Ham 2 2 3 0 3 team bXeGR2ug 1381071600 3 3 West Brom WES West Brom 0 0 1 1 0 team ARS Arsenal 1 0 1 team ...
0
|
|
|
0 / 0 / 2
Регистрация: 09.09.2013
Сообщений: 32
|
|||||
| 11.10.2013, 07:32 [ТС] | |||||
|
Ого! Пока я спал, здесь целая дискуссия образовалась. Всем спасибо за участие, всем отвечаю:
0
|
|||||
| 11.10.2013, 07:32 | |
|
Помогаю со студенческими работами здесь
20
Создать шаблон для всех страниц с подстановкой изменяющихся элементов
Парсинг динамически создаваемого контента парсинг страниц Парсинг страниц Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|