Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
feodor
15 / 15 / 4
Регистрация: 26.05.2017
Сообщений: 87
#1

Simple DOM - парсим погоду - PHP

08.06.2018, 22:01. Просмотров 110. Ответов 4
Метки нет (Все метки)

Что надо? Спарсить погоду по классу (term__value, etc) от сюда https://yandex.ru/pogoda/moscow и поместить ее в файл.
Что есть?
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
<?php
    header('Content-Type: text/html; charset= utf-8');
    include 'simple_html_dom.php';
      
/*    $ch = curl_init();  
      curl_setopt($ch, CURLOPT_URL, 'https://yandex.ru/pogoda/moscow'); 
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
      $result = curl_exec($ch); 
      curl_close($ch);  */
      
    $html = new simple_html_dom();
    /* $html->load($result); */
    $html->load_file('html.html');
    $collection = $html->find('.temp__value');
    
    $fd = fopen("hello.txt", 'w');
        for($m=0; $m <count($collection); $m++)
    {
    fwrite($fd, $collection[ $m ]);
    fwrite($fd, "\r\n");
    }
    fclose($fd);
    
    
 
 
?>
Что не так?
Результат работы
Кликните здесь для просмотра всего текста
<span class="temp__value">+10</span>
<span class="temp__value">+8</span>
<span class="temp__value">+12</span>
<span class="temp__value">+15</span>
<span class="temp__value">+4</span>
<span class="temp__value">+14</span>
<span class="temp__value">+5</span>
<span class="temp__value">+14</span>
<span class="temp__value">+7</span>
<span class="temp__value">+18</span>
<span class="temp__value">+12</span>
<span class="temp__value">+23</span>
<span class="temp__value">+13</span>
<span class="temp__value">+18</span>
<span class="temp__value">+9</span>
<span class="temp__value">+18</span>
<span class="temp__value">+9</span>
<span class="temp__value">+19</span>
<span class="temp__value">+10</span>
<span class="temp__value">+23</span>
<span class="temp__value">+12</span>
<span class="temp__value">+25</span>
<span class="temp__value">+11</span>
<span class="temp__value">+10</span>
<span class="temp__value">+11</span>
<span class="temp__value">+17</span>
<span class="temp__value">+8</span>
<span class="temp__value">+9</span>
<span class="temp__value">+13</span>
<span class="temp__value">+11</span>
<span class="temp__value">+12</span>
<span class="temp__value">+15</span>
<span class="temp__value">+18</span>
<span class="temp__value">+12</span>
<span class="temp__value">+9</span>

А хотелось
Кликните здесь для просмотра всего текста
+10
+8
+12
+15
и так далее


Добавлено через 2 минуты
Надо сделать что-то в районе
PHP
1
$collection = $collection ->children(0)
Только рабочее
http://www.cyberforum.ru/php/thread2038485.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2018, 22:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Simple DOM - парсим погоду (PHP):

Ошибка в simple html dom
При парсинге множество страниц выходит ошибка, скрипт запускался в cron PHP...

Библиотека Simple DOM Parser - парсинг
Добрый день. ЕСть страница 4.php: &lt;div id=&quot;d1&quot;&gt;text-1&lt;/div&gt; &lt;div...

PHP Simple HTML DOM Parser
Не подключается библиотека, на страничке написал 1 строчку с подключением...

Php simple html dom parser
Здравствуйте, дорогие форумчане. Начинаю изучать библиотеку парсинга php...

Проблемка с PHP Simple HTML DOM Parser. Парсит, не останавливается на конце тега + кодировка
Собственно проблема, даже две :) 1) Есть кусок кода: .... $com = ' ';...

4
coder02
5 / 5 / 2
Регистрация: 28.12.2016
Сообщений: 30
08.06.2018, 22:19 #2
там такой же синтаксик, как у селекторов JQuery. Соответственно, для получения содержимого нужно свойство с названием типа text или innerText. И придется доставать его в цикле из всех элементов коллекции
0
feodor
15 / 15 / 4
Регистрация: 26.05.2017
Сообщений: 87
08.06.2018, 22:30  [ТС] #3
Если ты думаешь, что я такой умный, чтобы сделать то, что ты написал, ты ошибаешься. Было бы очень не плохо, елси бы ты написал код... Спасибо!
0
coder02
5 / 5 / 2
Регистрация: 28.12.2016
Сообщений: 30
08.06.2018, 22:48 #4
Лучший ответ Сообщение было отмечено feodor как решение

Решение

Ну ты же почти сделал как надо.
вот пример из доки к Simple HTML DOM
PHP
1
2
3
4
5
6
7
// Find all article blocks
foreach($html->find('div.article') as $article) {
    $item['title']     = $article->find('div.title', 0)->plaintext;
    $item['intro']    = $article->find('div.intro', 0)->plaintext;
    $item['details'] = $article->find('div.details', 0)->plaintext;
    $articles[] = $item;
}
соответственно, тебе, по идее, надо делать как-то так
PHP
1
2
3
4
5
    for($m=0; $m <count($collection); $m++)
    {
    fwrite($fd, $collection[ $m ]->plaintext;);
    fwrite($fd, "\r\n");
    }
1
feodor
15 / 15 / 4
Регистрация: 26.05.2017
Сообщений: 87
09.06.2018, 07:13  [ТС] #5
coder02, спасибо, это работает!
0
09.06.2018, 07:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2018, 07:13
Привет! Вот еще темы с решениями:

Библиотека PHP Simple HTML DOM. Непонятки с кодировкой - результат выдается в win-1251, а надо в utf-8.
Сам файл библиотеки в utf-8. Файл скрипта также в utf-8. В настройках...

Парсим шаблоны
Подскажите пожалуйста скрипт, при помощи которого можно парсить шаблоны......

XML + DOM
Добрый день. Товарищи, помогите пожалуйста: как вывести только что созданный...

Работа с DOM
Всем доброго дня! Возможно ли средствами PHP получить содержимое в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru