PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Нуб-2
Отправлено: 29 Августа, 2017 - 22:04:01
Post Id


Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)

[+]


Добрый день. В странице есть такой код, как спарсить данные из него?
две даты из div class="detailsStatRight" и еще 2 цифры из таблицы.
CODE (html):
скопировать код в буфер обмена
  1. <div class="panel">
  2. <div class="hr padded"></div>   <div class="rightDetailsBlock">
  3. <div class="hr padded"></div>
  4. <div class="rightDetailsBlock">
  5. <div class="detailsStatsContainerLeft">
  6. <div class="detailsStatLeft">Posted </div>
  7. <div class="detailsStatLeft">Updated </div>
  8. </div>
  9. <div class="detailsStatsContainerRight">
  10. <div class="detailsStatRight">25 Aug @ 7:39pm</div>
  11. <div class="detailsStatRight">29 Aug @ 5:51am</div>
  12. </div>
  13. <div style="clear:left"></div>
  14. </div>
  15. </div>
  16.  
  17. <div class="panel">
  18. <table class="stats_table">
  19. <tbody><tr>
  20. <td>467</td>
  21. <td>Unique Visitors</td>
  22. </tr>
  23. <tr>
  24. <td>3</td>
  25. <td>Current Favorites</td>
  26. </tr>
  27. </tbody></table></div>
  28.  
 
 Top
rgl
Отправлено: 30 Августа, 2017 - 10:28:21
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Авг. 2017  
Откуда: замкадье


Помог: 1 раз(а)




регуляркой?
PHP:
скопировать код в буфер обмена
  1. '/class=[\'"]detailsStatRight[\'"]>(\d+)\s+(\w+)[\s@]+(\d+):(\d+)([ap]m)?</i'

(Отредактировано автором: 30 Августа, 2017 - 10:29:52)

 
 Top
Строитель Модератор
Отправлено: 30 Августа, 2017 - 21:09:18
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 922
Дата рег-ции: Февр. 2014  


Помог: 31 раз(а)




Нуб-2
Спойлер (Отобразить)
 
 Top
Нуб-2
Отправлено: 31 Августа, 2017 - 19:10:29
Post Id


Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)

[+]


Строитель пишет:
Нуб-2
Спойлер (Отобразить)


Спасибо. А как эти же значения спарсить с сайта?
Через simpleHTMLdom у меня не получается :с
 
 Top
Строитель Модератор
Отправлено: 31 Августа, 2017 - 19:30:20
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 922
Дата рег-ции: Февр. 2014  


Помог: 31 раз(а)




Нуб-2 пишет:
А как эти же значения спарсить с сайта?
Попробуйте с помощью CURL
 
 Top
Нуб-2
Отправлено: 02 Сентября, 2017 - 20:03:29
Post Id


Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)

[+]


Строитель пишет:
Нуб-2 пишет:
А как эти же значения спарсить с сайта?
Попробуйте с помощью CURL


Я отсталый, но почему не работает?
PHP:
скопировать код в буфер обмена
  1.  function page_visitors($url){
  2.         $fp2 = file_get_contents($url);
  3.         if (!$fp2)
  4.             return null;
  5.         $res2 = preg_match("<table\ class="stats_table"><tbody><tr><td>(\d+)</td>", $fp2, $visitors_matches);
  6.         if (!$res2)
  7.             return null;
  8.         return $res2;
  9.     }
  10. print page_visitors("http://steamcommunity.com/sharedfiles/filedetails/?id=1120193385");
 
 Top
andrewkard
Отправлено: 02 Сентября, 2017 - 21:47:58
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 967
Дата рег-ции: Нояб. 2014  


Помог: 19 раз(а)




Нуб-2
Там нет такой строки: <table\ class="stats_table"><tbody><tr><td>
Кроме того, у Вас ошибка, которую подсвечивает даже форум, какой IDE пользуетесь?
"<table\ class="stats_table"><tbody><tr><td>(\d+)</td>"
Для парсинга лучше воспользоваться готовой библиотекой, например http://simplehtmldom[dot]sourceforge[dot]net/
 
 Top
Нуб-2
Отправлено: 02 Сентября, 2017 - 22:21:41
Post Id


Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)

[+]


andrewkard пишет:
Нуб-2
Там нет такой строки: <table\ class="stats_table"><tbody><tr><td>
Кроме того, у Вас ошибка, которую подсвечивает даже форум, какой IDE пользуетесь?
"<table\ class="stats_table"><tbody><tr><td>(\d+)</td>"
Для парсинга лучше воспользоваться готовой библиотекой, например http://simplehtmldom.sourceforge.net/


Я пользуюсь Sublime Text 3 Beta, в кач-ве сервера MAMP.
А в чем конкретно ошибка? Не вижу :с
С конкретно этой библиотекой у меня не сошлось что-то Недовольство, огорчение

(Случайно не слеш после table? Однако Закатив глазки )
(Добавление)
С этой библиотекой у меня даже пример не работает, лол
Спойлер (Отобразить)

(Добавление)
О, я проблему с библиотекой рандомно решил Не понял
(Добавление)
Но вопрос с ровным парсингом остался Недовольство, огорчение
Подозреваю, что что-то с регуляркой
(Добавление)
Вот такое, аналогичное примеру, не работает Хм
PHP:
скопировать код в буфер обмена
  1. <?
  2. include("simple_html_dom.php");
  3.  
  4. // Create DOM from URL or file
  5. $html = file_get_html('http://steamcommunity.com/sharedfiles/filedetails/?id=1120193385');
  6.  
  7.  
  8. foreach($html->find('a') as $element)
  9.        echo $element->src . '<br>';

(Добавление)
Господи, я идиот, там не scr должно быть, лол
(Добавление)
Но вопрос про парсинг висит :с
(Добавление)
Помогите спарсить цифры с панели справа, пожалуйста Недовольство, огорчение
Где избранное и посетители
Спойлер (Отобразить)

(Отредактировано автором: 02 Сентября, 2017 - 22:27:20)

 
 Top
andrewkard
Отправлено: 03 Сентября, 2017 - 10:18:59
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 967
Дата рег-ции: Нояб. 2014  


Помог: 19 раз(а)




Нуб-2 пишет:
Помогите спарсить цифры с панели справа, пожалуйста

PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($html->find('.stats_table td') as $element){
  3.     echo $element->innertext . '<br>';
  4. }
  5.  
 
 Top
Нуб-2
Отправлено: 05 Сентября, 2017 - 00:18:02
Post Id


Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)

[+]


andrewkard пишет:
Нуб-2 пишет:
Помогите спарсить цифры с панели справа, пожалуйста

PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($html->find('.stats_table td') as $element){
  3.     echo $element->innertext . '<br>';
  4. }
  5.  


Спасибо большое!!

Теперь вопрос по БД Недовольство, огорчение

Не хочет никак записывать в бд
PHP:
скопировать код в буфер обмена
  1. function statLoad($id, $needToAddToBase) {
  2.  
  3.     $link = 'http://steamcommunity.com/sharedfiles/filedetails/?id=' . $id;
  4.  
  5.  
  6.     $html = file_get_html($link);
  7.     $i = 0;
  8.  
  9.     foreach ($html->find('.stats_table td') as $element) {
  10.  
  11.         if (is_numeric($element->innertext)) {
  12.             $i++;
  13.             if ($i == 1) {
  14.                 $funcSteamVisitors = $element->innertext;
  15.             }
  16.             if ($i == 2) {
  17.                 $funcFavs = $element->innertext;
  18.             }
  19.             //
  20.             //     echo $num ." число " . $element->innertext . '<br>';
  21.             //echo $element->innertext . '<br>';
  22.         }
  23.     }
  24.     if ($needToAddToBase == 0) {
  25.         #то ничего
  26.    } else {
  27.         /*
  28.          * MYSQL конфигурация
  29.          */
  30.         $configMySqlHost = 'localhost'; // адрес сервера
  31.         $configMySqlDatabase = 'dev'; // имя базы данных
  32.         $configMySqlUser = 'root'; // имя пользователя
  33.         $configMySqlPassword = 'root'; // пароль
  34.  
  35.         $mysqllink = mysqli_connect($configMySqlHost, $configMySqlUser, $configMySqlPassword, $configMySqlDatabase);
  36.  
  37.  
  38.         $result = mysqli_query($mysqllink, "SELECT * FROM guidesStats WHERE steamID = '" . $id . "'");
  39.         $row = @mysqli_fetch_array($result);
  40.         if (!$row['id']) {
  41.             echo $row['id'];
  42.         } else {
  43.             if (mysqli_query($mysqllink, "INSERT INTO `guidesStats` (`steamID`, `visitors`, `favs`) VALUES ('" . $id . "', '" . $funcSteamVisitors . "', '" . $funcFavs . "')") === TRUE) {
  44.                 //$sql = "INSERT INTO `guidesStats` (`steamID`, `visitors`, `favs`) VALUES (\'1\', \'2\', \'3\')";
  45.                 echo "Запись успешно добавлена в таблицу";
  46.             } else {
  47.                 'Запись не добавлена в таблицу :(';
  48.                 echo mysqli_error();
  49.             }
  50.         }
  51.     }
  52.  
  53.     return array($funcSteamVisitors, $funcFavs);
  54. }


Сама бд выглядит так https://i[dot]paste[dot]pics/4a076ecf2ca[dot][dot][dot]daf64501caa1[dot]png
 
 Top
Нуб-2
Отправлено: 05 Сентября, 2017 - 16:07:43
Post Id


Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)

[+]


При том, что при неправильном запросе и NULL данных, он нормально записывает в бд
id steamID visitors favs
3 1 0 0
(Добавление)
Вопрос закрыт, удалил этот говнокод и сделал заново через pdo Радость
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB