Сообщение было отмечено kl1ent как решение
Решение
Задача обновилась и немного упростилась:
Вот готовый и рабочий парсер
| PHP/HTML | 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
| <?php
$url="http://accessoriesforhome.ru/category/ekrani-pod-vannu.aspx?size=2147483647&sort=ByPriceAsc"; //ссылка
$content=file_get_contents($url);
/*
$tag_in="item-table-main";// выбрать от
$tag_out="body_dppBottomPagination";// выбрать до
$position = strpos($content, $tag_in);
$content = substr($content, $position);
$position = strpos($content, $tag_out);
$content = substr ($content, 0, $position);
*/
//обрезать теги
//$content = strip_tags($content);
//echo $content;
preg_match_all("/ItemImageForSearchPage_150x180.jpg\" alt=\"[^>]+>/", $content, $title);
preg_match_all("/.aspx\"><img src=\"http:[^>]+>/", $content, $img);
preg_match_all("/item-table-item-price\">[^>]+>/", $content, $price);
preg_match_all("/ item-status-ready\">[^>]+>/", $content, $own);
preg_match_all("/item-table-item-name\" href=[^>]+>/", $content, $link);
$count = count ($title[0])-1;
$data = array();
for ($i=0; $i<=$count; $i++) {
$title_r = substr($title[0][$i],41, -4);
$title_r = htmlspecialchars_decode($title_r);
$img_r = substr($img[0][$i],17, -20);
$price_r = substr($price[0][$i],23);
$ssilka = "http://accessoriesforhome.ru".substr($link[0][$i],30, -2);
//вторичный запрос
$content1=file_get_contents($ssilka);
preg_match_all("/body_contentOfiipItemInfo_lblMarking\">[^>]+>/", $content1, $artikyl);
preg_match_all("/body_contentOfiipItemInfo_hlProducer\" href=[^>]+>/", $content1, $prod);
preg_match_all("/body_contentOfiipItemInfo_hlProducer[^<]+</", $content1, $productor);
preg_match_all("/item-full-description\">
<div>
[^<]+</", $content1, $text);
$text_r = substr($text[0][0],23, -1);
$text_r = strip_tags($text_r);
$artikyl_r = substr($artikyl[0][0],38, -1);
$productor_r = substr($productor[0][0],64, -1);
$data[$i][0] = "";
$data[$i][1] = $title_r;
$data[$i][2] = $price_r;
$data[$i][3] = $title_r;
$data[$i][4] = "1";
$data[$i][5] = "";
$data[$i][6] = $productor_r;
$data[$i][7] = "";
$data[$i][8] = "";
$data[$i][9] = $artikyl_r;
$data[$i][10] = "";
$data[$i][11] = "";
$data[$i][12] = "";
$data[$i][13] = $text_r;
$data[$i][14] = "";
$data[$i][15] = "";
$data[$i][16] = $img_r;
}
$str = '';
foreach($data as $value){
$str = $value[0].';'.$value[1].';'.$value[2].';'.$value[3].';'.$value[4].';'.$value[5].';'.$value[6].';'.$value[7].';'.$value[8].';'.$value[9].';'.$value[10].';'.$value[11].';'.$value[12].';'.$value[13].';'.$value[14].';'.$value[15].';'.$value[16].';'.";\r\n";
}
$str = iconv("UTF-8", "WINDOWS-1251", $str);
file_put_contents('test.csv', $str);
?>
<script type="text/javascript">alert("Готово!");</script> |
|
Добавлено через 23 минуты
что-то я тут напутал) и извините за спам  , но должно быть вот как
парсер (только записывает значения в переменные):
| PHP/HTML | 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
| <?php
$url="http://accessoriesforhome.ru/category/ekrani-pod-vannu.aspx?size=2147483647&sort=ByPriceAsc"; //ссылка
$content=file_get_contents($url);
/*
$tag_in="item-table-main";// выбрать от
$tag_out="body_dppBottomPagination";// выбрать до
$position = strpos($content, $tag_in);
$content = substr($content, $position);
$position = strpos($content, $tag_out);
$content = substr ($content, 0, $position);
*/
//обрезать теги
//$content = strip_tags($content);
//echo $content;
preg_match_all("/ItemImageForSearchPage_150x180.jpg\" alt=\"[^>]+>/", $content, $title);
preg_match_all("/.aspx\"><img src=\"http:[^>]+>/", $content, $img);
preg_match_all("/item-table-item-price\">[^>]+>/", $content, $price);
preg_match_all("/ item-status-ready\">[^>]+>/", $content, $own);
preg_match_all("/item-table-item-name\" href=[^>]+>/", $content, $link);
$count = count ($title[0])-1;
for ($i=0; $i<=$count; $i++) {
$title_r = substr($title[0][$i],41, -4);
$title_r = htmlspecialchars_decode($title_r);
$img_r = substr($img[0][$i],17, -20);
$price_r = substr($price[0][$i],23);
echo "<p>".$title_r."</p>";
echo "<p>".$img_r."</p>";
echo "<p> Цена: ".$price_r."</p>";
$ssilka = "http://accessoriesforhome.ru".substr($link[0][$i],30, -2);
//вторичный запрос
$content1=file_get_contents($ssilka);
preg_match_all("/body_contentOfiipItemInfo_lblMarking\">[^>]+>/", $content1, $artikyl);
preg_match_all("/body_contentOfiipItemInfo_hlProducer\" href=[^>]+>/", $content1, $prod);
preg_match_all("/body_contentOfiipItemInfo_hlProducer[^<]+</", $content1, $productor);
preg_match_all("/item-full-description\">
<div>
[^<]+</", $content1, $text);
$text_r = substr($text[0][0],23, -1);
$text_r = strip_tags($text_r);
$artikyl_r = substr($artikyl[0][0],38, -1);
$productor_r = substr($productor[0][0],64, -1);
}
?>
<script type="text/javascript">alert("Готово!");</script> |
|
скрипт для таблицы
| PHP | 1
2
3
4
5
6
7
8
9
10
11
12
13
| <?php
// массив имитирует данные, полученные, например из базы данных
$data = array(
array('', $title_r, $price_r, $title_r, '1', '', $productor_r, '', '', $artikyl_r, '', '', '', $text_r, '', '', $img_r)
);
$str = '';
foreach($data as $value){
$str = $value[0].';'.$value[1].';'.$value[2].';'.$value[3].';'.$value[4].';'.$value[5].';'.$value[6].';'.$value[7].';'.$value[8].';'.$value[9].';'.$value[10].';'.$value[11].';'.$value[12].';'.$value[13].';'.$value[14].';'.$value[15].';'.$value[16].';'.$value[17].';'.";\r\n";
}
$str = iconv("UTF-8", "WINDOWS-1251", $str);
file_put_contents('test.csv', $str);
?> |
|
надо чтобы выводилось по очереди, и их надо как-то объединить. Вот что намутил, но все равно бред:
| PHP/HTML | 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
| <?php
$url="http://accessoriesforhome.ru/category/ekrani-pod-vannu.aspx?size=2147483647&sort=ByPriceAsc"; //ссылка
$content=file_get_contents($url);
/*
$tag_in="item-table-main";// выбрать от
$tag_out="body_dppBottomPagination";// выбрать до
$position = strpos($content, $tag_in);
$content = substr($content, $position);
$position = strpos($content, $tag_out);
$content = substr ($content, 0, $position);
*/
//обрезать теги
//$content = strip_tags($content);
//echo $content;
preg_match_all("/ItemImageForSearchPage_150x180.jpg\" alt=\"[^>]+>/", $content, $title);
preg_match_all("/.aspx\"><img src=\"http:[^>]+>/", $content, $img);
preg_match_all("/item-table-item-price\">[^>]+>/", $content, $price);
preg_match_all("/ item-status-ready\">[^>]+>/", $content, $own);
preg_match_all("/item-table-item-name\" href=[^>]+>/", $content, $link);
$count = count ($title[0])-1;
$data = array();$str = '';
for ($i=0; $i<=$count; $i++) {
$title_r = substr($title[0][$i],41, -4);
$title_r = htmlspecialchars_decode($title_r);
$img_r = substr($img[0][$i],17, -20);
$price_r = substr($price[0][$i],23);
$ssilka = "http://accessoriesforhome.ru".substr($link[0][$i],30, -2);
//вторичный запрос
$content1=file_get_contents($ssilka);
preg_match_all("/body_contentOfiipItemInfo_lblMarking\">[^>]+>/", $content1, $artikyl);
preg_match_all("/body_contentOfiipItemInfo_hlProducer\" href=[^>]+>/", $content1, $prod);
preg_match_all("/body_contentOfiipItemInfo_hlProducer[^<]+</", $content1, $productor);
preg_match_all("/item-full-description\">
<div>
[^<]+</", $content1, $text);
$text_r = substr($text[0][0],23, -1);
$text_r = strip_tags($text_r);
$artikyl_r = substr($artikyl[0][0],38, -1);
$productor_r = substr($productor[0][0],64, -1);
$data[$i][0] = "";
$data[$i][1] = $title_r;
$data[$i][2] = $price_r;
$data[$i][3] = $title_r;
$data[$i][4] = "1";
$data[$i][5] = "";
$data[$i][6] = $productor_r;
$data[$i][7] = "";
$data[$i][8] = "";
$data[$i][9] = $artikyl_r;
$data[$i][10] = "";
$data[$i][11] = "";
$data[$i][12] = "";
$data[$i][13] = $text_r;
$data[$i][14] = "";
$data[$i][15] = "";
$data[$i][16] = $img_r;
foreach($data[$i] as $value){
$str = $value[0].';'.$value[1].';'.$value[2].';'.$value[3].';'.$value[4].';'.$value[5].';'.$value[6].';'.$value[7].';'.$value[8].';'.$value[9].';'.$value[10].';'.$value[11].';'.$value[12].';'.$value[13].';'.$value[14].';'.$value[15].';'.$value[16].';'.";\r\n";
}
}
$str = iconv("UTF-8", "WINDOWS-1251", $str);
file_put_contents('test.csv', $str);
?>
<script type="text/javascript">alert("Готово!");</script> |
|
Добавлено через 1 час 41 минуту
upd
| PHP/HTML | 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
| <?php
$url="http://accessoriesforhome.ru/category/ekrani-pod-vannu.aspx?size=2147483647&sort=ByPriceAsc"; //ссылка
$content=file_get_contents($url);
/*
$tag_in="item-table-main";// выбрать от
$tag_out="body_dppBottomPagination";// выбрать до
$position = strpos($content, $tag_in);
$content = substr($content, $position);
$position = strpos($content, $tag_out);
$content = substr ($content, 0, $position);
*/
//обрезать теги
//$content = strip_tags($content);
//echo $content;
preg_match_all("/ItemImageForSearchPage_150x180.jpg\" alt=\"[^>]+>/", $content, $title);
preg_match_all("/.aspx\"><img src=\"http:[^>]+>/", $content, $img);
preg_match_all("/item-table-item-price\">[^>]+>/", $content, $price);
preg_match_all("/ item-status-ready\">[^>]+>/", $content, $own);
preg_match_all("/item-table-item-name\" href=[^>]+>/", $content, $link);
$count = count ($title[0])-1;
$data = array();
for ($i=0; $i<=$count; $i++) {
$title_r = substr($title[0][$i],41, -4);
$title_r = htmlspecialchars_decode($title_r);
$img_r = substr($img[0][$i],17, -20);
$price_r = substr($price[0][$i],23, -7);
$ssilka = "http://accessoriesforhome.ru".substr($link[0][$i],30, -2);
//вторичный запрос
$content1=file_get_contents($ssilka);
preg_match_all("/body_contentOfiipItemInfo_lblMarking\">[^>]+>/", $content1, $artikyl);
preg_match_all("/body_contentOfiipItemInfo_hlProducer\" href=[^>]+>/", $content1, $prod);
preg_match_all("/body_contentOfiipItemInfo_hlProducer[^<]+</", $content1, $productor);
preg_match_all("/item-full-description\">
<div>
[^<]+</", $content1, $text);
$text_r = substr($text[0][0],23, -1);
$text_r = strip_tags($text_r);
preg_match("/[А-Яа-я]/i", $text_r) ? $a=1: $text_r = "";
$artikyl_r = substr($artikyl[0][0],38, -7);
$productor_r = substr($productor[0][0],65, -1);
$data[$i][0] = "";
$data[$i][1] = $title_r;
$data[$i][2] = $price_r;
$data[$i][3] = $title_r;
$data[$i][4] = "1";
$data[$i][5] = "";
$data[$i][6] = $productor_r;
$data[$i][7] = "";
$data[$i][8] = "";
$data[$i][9] = $artikyl_r;
$data[$i][10] = "";
$data[$i][11] = "";
$data[$i][12] = "";
$data[$i][13] = $text_r;
$data[$i][14] = "";
$data[$i][15] = "";
$data[$i][16] = $img_r;
}
print_r($data);
$str = "";
foreach($data as $value){
$str = $value[0].';'.$value[1].';'.$value[2].';'.$value[3].';'.$value[4].';'.$value[5].';'.$value[6].';'.$value[7].';'.$value[8].';'.$value[9].';'.$value[10].';'.$value[11].';'.$value[12].';'.$value[13].';'.$value[14].';'.$value[15].';'.$value[16].";\r\n";
}
$str = iconv("UTF-8", "WINDOWS-1251", $str);
file_put_contents('test.csv', $str);
?>
<script type="text/javascript">alert("Готово!");</script> |
|
вот код и работает нормально, но вставляет таблицу только последнее значение и нету цикла(
Помогите с этим пожалуйта
0
|