1 / 1 / 0
Регистрация: 15.10.2012
Сообщений: 79
1

[PHP парсер] Вытащить таблицу, (другие данные) со страницы

12.07.2015, 17:09. Показов 2308. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Тема парсеров, как phpшных, так и разных других уже избита, информации полный интернет, но у меня не получается
Цель: вытащить со страницы таблицу с содержимым, кнопками, и т.д (между тэгов <table> </table>. Вытащить в простой, пустой html файл.
Как это можно сделать?
Да и вообще, как можно вытащить хотя бы пару слов со страницы? (на условии их обновления, конечно, иначе парсер не нужен)
Дайте что-нибудь рабочее.
Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.07.2015, 17:09
Ответы с готовыми решениями:

Как вытащить из документа таблицу, чтобы её можно было вставлять в другие документы?
как вытащить из документа таблицу чтобы её можно было вставлять в другие документы,... таблицу...

Парсер на PHP (вытащить строчку из кода сайта по номеру этой строки)
Подскажите пожалуйста, вот если, например, есть сайт (http://site.ru/) и если мы откроем его код,...

Парсер с php страницы
Имеется вот такая php страничка http://betcityru.com/live/results.php Мне нужно брать с этой...

Вытащить данные с html страницы в БД
Необходимо взять данные с HTML страницы и вставить их в свою БД

10
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
12.07.2015, 18:24 2
Цитата Сообщение от BuTaMuH27 Посмотреть сообщение
Да и вообще, как можно вытащить хотя бы пару слов со страницы? (на условии их обновления, конечно, иначе парсер не нужен)
Дайте что-нибудь рабочее.
Есть встроенный в PHP класс SimpleXML. Он спарсит любую html\xml страницу за Вас.
0
1 / 1 / 0
Регистрация: 15.10.2012
Сообщений: 79
13.07.2015, 00:36  [ТС] 3
Цитата Сообщение от pav1uxa Посмотреть сообщение
Есть встроенный в PHP класс SimpleXML. Он спарсит любую html\xml страницу за Вас.
А можете привести конкретный кусок кода?

Добавлено через 26 минут
Цитата Сообщение от pav1uxa Посмотреть сообщение
Есть встроенный в PHP класс SimpleXML. Он спарсит любую html\xml страницу за Вас.
Как с того же яндекса вытянуть, например, температуру? Просто текстом
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
13.07.2015, 01:00 4
Цитата Сообщение от BuTaMuH27 Посмотреть сообщение
Как с того же яндекса вытянуть, например, температуру?
Если дело только в каком-то единичном элементе, как та же погода, то можно обойтись и без библиотек.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
function getSslPage($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_HEADER, false);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_REFERER, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
$html = getSslPage('https://www.yandex.ru/');
$dom = new DomDocument();
$ies = libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_use_internal_errors($ies);
$xpath = new DomXPath($dom);
$bw = $xpath->query("//*[contains(@class, 'b-weather')]");
echo $dom->saveHtml($bw->item(0));
0
1 / 1 / 0
Регистрация: 15.10.2012
Сообщений: 79
13.07.2015, 15:04  [ТС] 5
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Если дело только в каком-то единичном элементе, как та же погода, то можно обойтись и без библиотек.
Спасибо, вроде разобрался.
Скажите, пожалуйста, а как подобный код превратить в парсер?


PHP
1
2
3
4
5
6
7
8
loadpage('http://stk.csserv.su/amxbans/ban_list.php') {
    group 'group1' {
        date1 = gettext('//html/body/div[@id="site"]/div[@class="center-wrapper"]/div[@class="main"]/div[@class="post"]/table[1]/tbody[1]/tr[@class="list"]/td[2]');
        nick1 = gettext('//html/body/div[@id="site"]/div[@class="center-wrapper"]/div[@class="main"]/div[@class="post"]/table[1]/tbody[1]/tr[@class="list"]/td[3]');
        admin1 = gettext('//html/body/div[@id="site"]/div[@class="center-wrapper"]/div[@class="main"]/div[@class="post"]/table[1]/tbody[1]/tr[@class="list"]/td[4]');
        time1 = gettext('//html/body/div[@id="site"]/div[@class="center-wrapper"]/div[@class="main"]/div[@class="post"]/table[1]/tbody[1]/tr[@class="list"]/td[6]');
    }
}
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
13.07.2015, 15:24 6
Цитата Сообщение от BuTaMuH27 Посмотреть сообщение
как подобный код превратить в парсер?
Наверно нужно начать с того, что ваш код я не понимаю, т.к. такого синтаксиса в php не встречал. Возможно вы используете какой-то фреймворк, но тогда я тем более не помощник, т.к. ни с какими фреймворками не работаю.
0
1 / 1 / 0
Регистрация: 15.10.2012
Сообщений: 79
13.07.2015, 16:08  [ТС] 7
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Наверно нужно начать с того, что ваш код я не понимаю, т.к. такого синтаксиса в php не встречал. Возможно вы используете какой-то фреймворк, но тогда я тем более не помощник, т.к. ни с какими фреймворками не работаю.
Я имею в виду, что как сделать парсер таблицы, с параметрами как тут:
PHP
1
2
3
4
date1 = gettext('//html/body/div[@id="site"]/div[@class="center-wrapper"]/div[@class="main"]/div[@class="post"]/table[1]/tbody[1]/tr[@class="list"]/td[2]');
        nick1 = gettext('//html/body/div[@id="site"]/div[@class="center-wrapper"]/div[@class="main"]/div[@class="post"]/table[1]/tbody[1]/tr[@class="list"]/td[3]');
        admin1 = gettext('//html/body/div[@id="site"]/div[@class="center-wrapper"]/div[@class="main"]/div[@class="post"]/table[1]/tbody[1]/tr[@class="list"]/td[4]');
        time1 = gettext('//html/body/div[@id="site"]/div[@class="center-wrapper"]/div[@class="main"]/div[@class="post"]/table[1]/tbody[1]/tr[@class="list"]/td[6]');
Добавлено через 21 минуту
И еще, подскажите, пожалуйста.
Как оформить эту строчку?
PHP
1
$unique_start = "<div class="profile_in_game_name">";
Пробовал вот так:
PHP
1
$unique_start = "<div class=\"profile_in_game_name\">";
Но не работает.
Путаница с кавычками.
Полный код, если нужно, кину.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
13.07.2015, 17:29 8
Цитата Сообщение от BuTaMuH27 Посмотреть сообщение
Пробовал вот так:
Правильно пробовали.
Цитата Сообщение от BuTaMuH27 Посмотреть сообщение
Но не работает.
Работает. https://ideone.com/5oA56n Результат смотрите снизу под stdout.
0
1 / 1 / 0
Регистрация: 15.10.2012
Сообщений: 79
14.07.2015, 14:51  [ТС] 9
Цитата Сообщение от pav1uxa Посмотреть сообщение
Работает. https://ideone.com/5oA56n Результат смотрите снизу под stdout.
Что тут тогда неверно?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$url = 'http://steamcommunity.com/id/flashbak01';
$unique_start = "<div class=\"profile_in_game_name\">";
$unique_end = "</div>";
function weather($url, $unique_start, $unique_end) {
$code = file_get_contents($url);
preg_match('/'.preg_quote($unique_start,
'/').'(.*)'.preg_quote($unique_end, '/').'/Us', $code, $match);
return $match[1];
}
echo weather($url, $unique_start, $unique_end);
 
?>
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
14.07.2015, 16:08 10
Цитата Сообщение от BuTaMuH27 Посмотреть сообщение
Что тут тогда неверно?
preg_match. Такой же вопрос мог задать человек, который вместо зубочистки взял лом. Только в вашем случае, этим ломом является регулярка, которая никогда не была инструментом для парсинга. Есть библиотеки для этих целей: Simple HTML DOM Parser (документация), phpQuery (описание) или родной класс DOMDocument со всеми другими дополнительными классами.
0
1 / 1 / 0
Регистрация: 15.10.2012
Сообщений: 79
14.07.2015, 16:47  [ТС] 11
Цитата Сообщение от Lazy_Den Посмотреть сообщение
preg_match. Такой же вопрос мог задать человек, который вместо зубочистки взял лом. Только в вашем случае, этим ломом является регулярка, которая никогда не была инструментом для парсинга. Есть библиотеки для этих целей: Simple HTML DOM Parser (документация), phpQuery (описание) или родной класс DOMDocument со всеми другими дополнительными классами.
с более простыми конструкциями работает
0
14.07.2015, 16:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2015, 16:47
Помогаю со студенческими работами здесь

Вытащить данные из базы данных в таблицу
Здравствуйте! Подскажите пожалуйста как вытащить данные из БД в мою таблицу. Лично я никак не...

Как вытащить данные из страницы в инфоблоке
Всем привет. Народ, подскажите плз как быть. У меня есть обычный ИБ - новости. Там в визуальном...

Как вытащить из БД данные без перезагрузки страницы?
Пожалуйста помогите мне с моим сайтом. Объясните мне пожалуйста одно. У меня есть страница, на...

Как вытащить табличные данные из HTML страницы?
Вообщем такая проблема: надо с одного сайта скачать данные, которые там находятся в табличном...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru