Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 29.01.2013
Сообщений: 87

Как получить данные с сайта?

30.11.2019, 07:03. Показов 928. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Хочу получить товары со страницы https://lk.wildberries.ru/poned
Пробовал выдернуть часть страницы регулярками

HTML5
1
2
3
4
5
wbTable.init({
                url: "https://lk.wildberries.ru/poned",
                data: { tableModel: {
...
...
А потом преобразовать в JSON,
но все равно выходит какая-то ерунда
Уверен есть более адекватный способ получить эту инфу.
Хелп плз)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.11.2019, 07:03
Ответы с готовыми решениями:

Как получить данные с сайта?
Не могу понять , как получить доступ к ресурсам при использовании прокси-сайтов такого плана как : http://daidostup.ru/ а нужно попасть...

Как получить данные с сайта?
как получить данные с сайта http://www.nbg.ge/index.php?m=582 прошу сделать пример пример из этого файла

Как получить данные с сайта о регистрации?
Здравствуйте, такой вопрос, как при регистрации пользователя автоматически отправить файл (запрос, выгрузку) на сервер, который написан на...

11
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
30.11.2019, 12:01
Привет.

Современный и самый общий способ:
1) на сервере эмулировать браузер с помощью selenium.
В результате получим правильную HTML-страницу со всеми правильно отработавшими скриптами.

2) Данную HTML-страницу надо парсить HTML-парсером. Регуляркой парсить крайне не рекомендуется, могут быть ошибки.

---
Почему? Потому что интернет изменился. Он не такой, какой был 20 лет назад. Страницы часто генерятся автоматически.
0
1 / 1 / 1
Регистрация: 29.01.2013
Сообщений: 87
30.11.2019, 12:23  [ТС]
Забыл добавить! Делается это с плагина в Хроме и в манифесте есть разрешения доступа к этой странице
0
 Аватар для esculap_ra
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
30.11.2019, 13:15
Цитата Сообщение от JGalt Посмотреть сообщение
Пробовал выдернуть часть страницы регулярками
Регулярка может не сработать, если ссылка типа /бла-бла-бла, то есть нет https:// тогда нужно искать a href=
0
1 / 1 / 1
Регистрация: 29.01.2013
Сообщений: 87
30.11.2019, 16:03  [ТС]
А и самое главное, это расширение Хрома, так что нужно сделать силами JS
0
 Аватар для esculap_ra
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
01.12.2019, 00:45
Цитата Сообщение от JGalt Посмотреть сообщение
А и самое главное, это расширение Хрома
Я сижу на мозилле (лисичка крутая - честно). Недавно посетил банк - там до сих пор ослика юзают - глючит не по-детски! - час времени потратил.
0
1 / 1 / 1
Регистрация: 29.01.2013
Сообщений: 87
01.12.2019, 01:10  [ТС]
дык не к этому то вопрос
0
 Аватар для esculap_ra
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
01.12.2019, 02:37
Я дам тебе рабочий код - но вникай сам
PHP
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
<?php
   # @engine Opencart
   # @package Joomido Supertools
   # @subpackage FETCHSCRIPT_fetchscript module
   # @type site controller
   # @copyright Copyright(C)2013 Joomido Group.All rights reserved.
   # site http://itlancers.org
   # @author ramzes_ra
   # @author's email joomidogroup@gmail.com
 
class ControllerSupertoolsFetchscript extends Controller
   {
     protected $FETCHSCRIPT_FETCH_MODE=false;
     protected $FETCHSCRIPT_FETCH_POSITION_BOTTOM=false;
     protected $FETCHSCRIPT_FETCH_MINIFY_HTML=false;
     protected $FETCHSCRIPT_FETCH_USE_CAP=false;
     protected $FETCHSCRIPT_FETCH_USE_CACHE=false;
     protected $FETCHSCRIPT_SEF_MODE=false;
 
 public function __construct($registry)
     {
       parent:: __construct($registry);
       if(!$config=$this->registry->get('cache')->get('fetchscript_setting')){
        $this->load->model('setting/setting');
        $config=$this->model_setting_setting->getSetting('fetchscript_');
        $this->registry->get('cache')->set('fetchscript_setting',$config); 
       }
      foreach($config as $key=>$val)
       {
         $var=strtoupper($key);
         $this->$var=$val;
       }
     }
 
 public function fetch($route)
     {
     if(!$this->FETCHSCRIPT_FETCH_MODE)
        return $route;
       $minilinks=preg_replace('/\/catalog\//i','',DIR_APPLICATION).'/minilinks/';
       if(!file_exists($minilinks.'.htaccess')){
           file_put_contents($minilinks.'.htaccess','<Files ".htaccess">
           deny from all
           </Files>
           RewriteEngine On 
           RewriteRule (.*)$ minilinks.php?1$');
       }
       $regexp='/(<script|<link){1}(<|\s|\w|\d|"|=|\'|\/|\.|-)++(>)/sUi';
       $regexp_fonts='/(<link href="\/\/fonts.googleapis.com\/css\?family=){1}(\d|\w|\+|:|,|"|\s|\/|=)++(>)/sUi';
       $regexp_body='/("|\'){1}(\w|\.|\/|-)++["|\']{1}/sUi';
       $regexp_style='/\\s*<style(\\b[^>]*>)([\\s\\S]*?)<\\/style>\\s*/i';
       $regexp_script='/(\\s*)<script(\\b[^>]*?>)([\\s\\S]*?)<\\/script>(\\s*)/i';
       $regexp_keeper='/\<!--KEEPER-->(.|\n)*?\<!--\/KEEPER-->/i';
       $regexp_footer='/{<footer>}{1}(.)++/i';
       
       if(preg_match($regexp_fonts,$route))
         {
           preg_match_all($regexp_fonts,$route,$matches_fonts);
            if(isset($matches_fonts[0])&& is_array($matches_fonts[0]))
             {
             $fonts = '';
             foreach($matches_fonts[0] as $flink){
             $route=str_replace($flink,'',$route);
             $fonts.=$flink;
             } 
           }
         }
       if(preg_match($regexp_keeper,$route))
         {
           preg_match_all($regexp_keeper,$route,$matches_keeper);
         if(isset($matches_keeper[0])&& is_array($matches_keeper[0]))
           {
             $k=0;
             $cache_keeper='fetchscript_'.md5(implode('',$matches_keeper[0]));
             $critical=array();
           if($this->FETCHSCRIPT_FETCH_USE_CACHE)
                $critical=$this->registry->get('cache')->get($cache_keeper);
           if(!empty($critical))
             {
              foreach($critical as $key=>$val)
               {
                 $route=str_replace($val,$key,$route);
               }
               $critical_exists=true;
             }
              else
             {
              foreach($matches_keeper[0] as $scr)
               {
                 $route=str_replace($scr,'keep_'.$k,$route);
                 $critical['keep_'.$k]=$scr;
                 $k++;
               }
             if($this->FETCHSCRIPT_FETCH_USE_CACHE&&!isset($critical_exists))
                  $this->setCache($cache_keeper,$critical);
             }
           }
         }
       preg_match_all($regexp,$route,$matches);
     if(isset($matches[0])&& is_array($matches[0]))
       {
         $ar=array();
        foreach($matches[0] as $pattern)
         {
         if($pattern=='<script type="text/javascript">')continue  ;
              $route=str_replace($pattern.'</script>','',$route);
           $route=str_replace($pattern,'',$route);
         if(strpos($pattern,'.js')>0)
              $ar['js'][]=$pattern;
          elseif(strpos($pattern,'.css')>0)
              $ar['css'][]=$pattern;
         }
         $js=array();
         $css=array();
        foreach($ar['js'] as $a)
         {
           preg_match_all($regexp_body,$a,$matches);
           $c=preg_replace('("|\')','',$matches[0][0]);
           $js[]=$c;
         }
       if(!empty($js))
         {
           $md5scripts=md5(implode(',',$js));
           $scripts='<script src="minilinks/'.$md5scripts.'.js" type="text/javascript"></script>';
         if(!file_exists($minilinks.$md5scripts))
           {
             file_put_contents($minilinks.$md5scripts,implode(',',$js));
           }
         }
        foreach($ar['css'] as $a)
         {
           $a=str_replace('rel="stylesheet"','',$a);
           preg_match_all($regexp_body,$a,$matches);
           $c=preg_replace('("|\')','',$matches[0][0]);
           $css[]=$c;
         }
       if(!empty($css))
         {
           $route=str_replace('src="'.HTTP_SERVER, 'src="minilinks/', $route);
           $route=str_replace('src="/', 'src="minilinks/', $route);
           $md5styles=md5(implode(',',$css));
           $styles='<link href="minilinks/'.$md5styles.'.css" rel="stylesheet" type="text/css" />';
         if(!file_exists($minilinks.$md5styles))
           {
             file_put_contents($minilinks.$md5styles,implode(',',$css));
           }
         }
       }
     if($this->FETCHSCRIPT_FETCH_MINIFY_HTML)
           require_once('minify_html.php');
     if($this->FETCHSCRIPT_FETCH_POSITION_BOTTOM||$this->FETCHSCRIPT_FETCH_MINIFY_HTML)
       {
         preg_match_all($regexp_script, $route, $body_scripts);
         $i=0;
       if(isset($body_scripts[0])&& is_array($body_scripts[0]))
         {
           $cache_file='fetchscript_'.md5(implode('',$body_scripts[0]));
         if($this->FETCHSCRIPT_FETCH_USE_CACHE)
              $keep=$this->registry->get('cache')->get($cache_file);
         if(!empty($keep))
           {
             $keep_exists=true;
            foreach($keep as $key=>$val)
             {
               $route=str_replace($body_scripts[0][$i],$key,$route);
               $i++;
             }
           }
            else
           {
            foreach($body_scripts[0] as $scr)
             {
               $bs=preg_replace(array('/<script type="text\/javascript">/i','/<script>/i','/<\/script>/i','/<!--/i','/\/\/-->/i','/-->/i','/(\/\/){1}.++/'),'',$scr);
               $replacement='<script type="text/javascript">document.addEventListener(\'DOMContentLoaded\', function(){'.$bs.'}, false);</script>';
               $keep['keep_'.md5($bs)]=$replacement;
               $route=str_replace($scr,'keep_'.md5($bs),$route);
               $i++;
             }
           if($this->FETCHSCRIPT_FETCH_USE_CACHE&&!isset($keep_exists))
                $this->setCache($cache_file,$keep);
           }
         }
         preg_match_all($regexp_style, $route, $body_styles);
       if(isset($body_styles[0])&& is_array($body_styles[0]))
         {
           $cache_styles='fetchscript_'.md5(implode('',$body_styles[0]));
         if($this->FETCHSCRIPT_FETCH_USE_CACHE)
              $all_body_styles=$this->registry->get('cache')->get($cache_styles);
         if(!empty($all_body_styles))
           {
             $styles_exists=true;
           }
            else
           {
             $ss=preg_replace(array('/<style type="text\/css">/i','/<style>/i','/<\/style>/i','(\\r|\\t|\\n)'),'',$body_styles[0]);
             $all_body_styles='<style>'.implode('',$ss).'</style>';
           if($all_body_styles!='<style></style>')
             {
             if($this->FETCHSCRIPT_FETCH_USE_CACHE&&!isset($styles_exists))
                  $this->setCache($cache_styles,$all_body_styles);
             }
              else
                $all_body_styles='';
           }
           $route=preg_replace($regexp_style,'',$route);
         }
       if($this->FETCHSCRIPT_FETCH_MINIFY_HTML)
            $route=Minify_HTML::minify($route);
       if(isset($keep)&&!empty($keep))
         {
          foreach($keep as $key=>$val)
           {
             $route=str_replace($key,$val,$route);
           }
         }
       }
      if(isset($critical)&&!empty($critical))
         {
          foreach($critical as $key=>$val)
           {
             $route=str_replace($key,$val,$route);
           }
         }
     if($this->FETCHSCRIPT_SEF_MODE&&file_exists('sef.php')){
          $sef = $this->load->controller('supertools/sef');
          $route=$sef->LinksRewrite($route);
         }
     if(!$this->FETCHSCRIPT_FETCH_POSITION_BOTTOM)
       {
         $route=preg_replace('(<\/head>)',$styles.$scripts.'</head>',$route);
       }
        else
       {
       if($all_body_styles!='')
            $route=preg_replace('(<\/body>)',$all_body_styles.'</body>',$route);
       if(isset($styles))
            $route=preg_replace('(<\/body>)',$styles.'</body>',$route);
       if(isset($scripts))
            $route=preg_replace('(<\/body>)',$scripts.'</body>',$route);
       if($this->FETCHSCRIPT_FETCH_USE_CAP){
           $cup_style = $this->getCupStyle();
           $route=preg_replace('(<\/head>)',$cup_style.'</head>',$route);
           $route=preg_replace('(<body>)','<body><div id="escapingBallG"></div><div id="pace-hidden" class="pace-hidden load_page">',$route);
           $route=preg_replace('(<\/body>)','<script>$("#pace-hidden").removeClass("load_page");$("div#escapingBallG").remove()</script></div></body>',$route);
        }
       }
       if(isset($fonts))
            $route=preg_replace('(<\/body>)',$fonts.'</body>',$route);
     return $route;
     }
 
 protected function setCache($file,$content)
     {
       $this->registry->get('cache')->set($file,$content);
     }
     
 protected function getCupStyle()
     {
       return '<style>.pace-hidden{width:100%;height:100%;}.load_page{opacity:0;position:fixed}#escapingBallG{position:fixed;z-index:2000;display:block;position:relative;margin-left:50%;margin-top:30%;height:90px;width:90px;display:block;border-width:30px;border-style:double;border-color:#008000 transparent transparent;border-radius:50%;-webkit-animation:spin 1s linear infinite; -moz-animation:spin 1s linear infinite;-o-animation:spin 1s linear infinite; animation:spin 1s linear infinite;}@-webkit-keyframes spin{100%{-webkit-transform: rotate(359deg);}}@-moz-keyframes spin{100%{-moz-transform: rotate(359deg);}}@-o-keyframes spin{100%{-moz-transform:rotate(359deg);}}@keyframes spin{100%{transform: rotate(359deg);}}</style>';
     }
   }
 
 
class TLog
   {
 
 public static function _log($message)
     {
       $handle=fopen('minilinks.log', 'a');
       fwrite($handle, date('Y-m-d G:i:s').'-'.print_r($message, true)."\n");
       fclose($handle);
     }
   }
0
1 / 1 / 1
Регистрация: 29.01.2013
Сообщений: 87
01.12.2019, 03:55  [ТС]
скорее всего это слишком сложно для меня, но буду стараться) Спасибо

Добавлено через 31 минуту
но это точно сработает в плагине для хрома?
0
 Аватар для esculap_ra
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
01.12.2019, 11:21
Цитата Сообщение от JGalt Посмотреть сообщение
но это точно сработает в плагине для хрома
Это не плагин, а код для сайта. Я видимо не так понял, - тебе нужен парсер?
0
1 / 1 / 1
Регистрация: 29.01.2013
Сообщений: 87
01.12.2019, 14:01  [ТС]
Мне нужно чтоб расширение для хрома получало артикулы отложенных вещей с сайта https://lk.wildberries.ru/poned, и отправляло эти данные на мой сервер(со второй частью проблем нет)
0
1 / 1 / 1
Регистрация: 29.01.2013
Сообщений: 87
04.12.2019, 20:28  [ТС]
Проблема так и не решилась. Я понимаю, что сначала грузится страница, а потом передаются данные, но как и откуда они подгружаются? Смотрел и через Хром и через Firebug, но знаний и соображаловки не хватает, помогите ребят!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.12.2019, 20:28
Помогаю со студенческими работами здесь

Как получить данные с веб-сайта?
Здравствуйте. Возникла необходимость дистанционно ограничивать функционал рабочих компьютеров, для чего была написана программка,...

Как получить данные с другого сайта?
Как можно через js, получить например название заголовка с другого сайта и вставить его себе на сайт? Например из сайта:...

Как получить нужные мне данные с сайта?
В общем задача такая, с этого сайта https://www.myscore.ru/match/2LzbBZBI/#point-by-point;1 вытащить эти строчки 0:15, 15:15,...

Как получить данные времени и даты из сайта time100.ru
Есть переменные h- часы m- минуты s - секунды Еще получить день недели оттуда же Как под них вставить данных из сайта...

C++ Visual Studio Win32Project как получить данные с сайта?
есть сайт http://agar.io/, я хочу написать клиентскую прогу, чтоб в окне программы ползали шарики, по координатам полученным с сайта с...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru