С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
kashichishi
1 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 57
1

Спарсить сайт

02.07.2017, 10:31. Просмотров 401. Ответов 4
Метки нет (Все метки)

Добрый день1 Нужно спарсить коктейли (картинки , названия и рецепт) сайт Клик-клак. Название и картинку спарсить получается легко , а вот рецепт нет. Может кто поможет? Подкинет идею как это сделать? Вот код на пхп
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
<?php
include "simple_html_dom.php";--библиотека для парсинга
$html = file_get_html('http://ru.inshaker.com/collections/150-alkogolnye-kokteyli');
$name = $html->find('span[class=label]');
$name_img = $html->find('img[height]');
$item_name=$html->find('div[class=name]');
//$name1=$name->find('.label');
$n=0;
$i=0;
while ($n <= 10) {
    //$item_name_db=strip_tags($item_name[$n]);
    $name_db=strip_tags($name[$n+$i]);
    echo $name_db;
    echo ("<br>");
    echo ("<br>");
    $img_name = $name_img[$n]->src;
    $logo = "http://ru.inshaker.com".$img_name;
    echo ("<img src='".$logo."'>");
    //echo "<br>";
    //echo $item_name_db;
    $i++;
    $n++;
}
 
//$img_name = $name_img[$n]->src;
//$logo = "http://ru.inshaker.com".$img_name;
//$name_cock = strip_tags($name[$n]);
 
 
?>
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2017, 10:31
Ответы с готовыми решениями:

Перейти на сайт, заполнить форму, нажать на кнопку и спарсить результат
Доброго времени суток. Есть онлайн ip калькулятор. Нужно ввести данные в...

Сайт после 5 секунд заходит на другой сайт (взломали сайт)
Когда я открою свое сайт он после 5 секунд заходит на другой сайт (взломали...

Спарсить страницу
Есть ли функция на подобие file_get_cintents(), которая сразу разбивает текст...

Спарсить XML
Всем доброго времени суток. Есть такой XML файлик: &lt;?xml version=&quot;1.0&quot;...

Спарсить названия трека
Есть код на сайте: &lt;div id=&quot;mbox_player&quot; class=&quot;aplayer__wrap&quot;&gt;&lt;script...

4
Валентин^_^
25 / 25 / 11
Регистрация: 15.10.2009
Сообщений: 174
02.07.2017, 12:51 2
Получить ссылку на каждый коктейль.
например http://ru.inshaker.com/cocktails/270-vishnevaya-sambuka

рецепт находится в списке ul с классом steps

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$url = 'http://ru.inshaker.com/cocktails/270-vishnevaya-sambuka';
 
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result_data = curl_exec($ch);
curl_close($ch);
 
$html = new simple_html_dom();
$html->load($result_data);
 
$data = $html->find('.steps');
foreach ($data as $item) {
    echo $item->plaintext . "<br>";
}
0
kashichishi
1 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 57
03.07.2017, 09:18  [ТС] 3
спасибо!

Добавлено через 11 часов 10 минут
Начал парсить другой сайт
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
<?php
//ini_set('max_execution_time', 1800);
include "simple_html_dom.php";
include "connect.php";
//форсим страницы
for ($i = 1;$i<=51;$i++){
$html = file_get_html('http://www.russianfood.com/recipes/bytype/?fid=23&page='.$i.'#rcp_list');//парсим страницы
$n=0;
while ($n<=49) {
    $img = $html->find("img[class=round shadow]");//фото
$about=$html->find("div[class=announce]");//описание
$about_db = strip_tags($about[$n]);
$img_db=$img[$n]->src;
$composition = $html->find("div[class=ingr_str]");
$composition_db = strip_tags($composition[$n]);
$html_rec=$html->find("div[class=title_o]");
$html_rec_db = "http://www.russianfood.com".$html_rec[$n]->last_child(0)->last_child(0)->href;
$html_rec_db_2=file_get_html($html_rec_db);
$name = $html->find("div[class=title]");
$name_db = $name[$n]->last_child(0);
$name_db_2= strip_tags($name_db);
$rec = $html_rec_db_2->find('div[id=how]');
$rec_2 = $rec[0];
$rec_db = strip_tags($rec_2);
//mysql_query("INSERT INTO `yaalkash`.`rec` (`id`, `name`, `img`, `about`, `composition`, `recept`) VALUES (NULL, '$name_db_2', '$img_db', '$about_db', '$composition_db', '$rec_db');");
 
$n++;
}
//--------
}
 
?>
выводит ошибку Fatal error: Call to a member function find() on a non-object in Z:\home\test1.ru\www\index.php on line 22
Парсилось все нормально , но после добавления sql запроса (insert) начала появляться эта ошибка.

Добавлено через 8 часов 53 минуты
up up up
0
otto-fukin
-55 / 58 / 21
Регистрация: 15.06.2017
Сообщений: 572
04.07.2017, 11:55 4
Проверять нужно то что возвращает file_get_html, а не просто использовать ее результат как объект класса
0
kashichishi
1 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 57
05.07.2017, 22:52  [ТС] 5
Спасибо!
0
05.07.2017, 22:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2017, 22:52

Php как спарсить 2ip
php как спарсить 2ip.ru пробовал своими силами, выдается значение ip адреса не...

Как спарсить содержимое тег pre?
Пытаюсь спарсить содержимое тега &lt;pre&gt; и никак не получается. Нужно, чтобы...

Покрашился сайт, Что-то накосячил, сайт не доступен
Поменял пароль в базе php.admin и теперь сайт не доступен, пишет Error...


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

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

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