Парсер (копия темы с DF2)

Модератор: t800

Парсер (копия темы с DF2)

Сообщение t800 » 09 май 2022, 12:09

У нас в городе есть компьютерный магазин. Заведует им дядя Стёпа. Этот магазин все знают и там покупают компьютеры. А так как теперь эра интернета, то у этого магазина тоже появился интернет магазин , через который тоже можно будет покупать. Но он пока пустой, так как он не заполнен, а так как дяде Стёпе некогда его заполнять (потому что в офисе дел полно), то он поручил мне эту задачу.

И теперь мне нужно заполнить магазин на VirtualMart3 такими же товарами как на другом сайте (из другого города) где стоит Битрикс. Я уже создал категории, начинаю добавлять к ним картинки, но с товарами сложности потому что в ручную это делать замучаешься, ибо товаров на другом магазине около 1000, и даже больше. И каждый нужно перенести и не только название и цену (и еще ее при этом умножить на разные проценты) да ещё и описания картинки в придачу. Я их уже третий день вечером после школы переношу и понял, что в ручную переносить это будет долго. Недельки 3 где-то, и мне захотелось попробовать написать скрипт чтобы автоматом перенести товары как это надо, потому что вручную заполнять оно как-то очень скучно.

Ну и у меня вопрос а как сделать такой пасер?
Справочник и Форум Green Dragon
T-800 MOD для Heroes of Might and Magic 2

Основатель клуба "Армагеддон"

Основатель клуба "Пещера Гремлинов"

ИзображениеИзображение
Аватара пользователя
t800
Experienced
Experienced
 
Сообщения: 849
Зарегистрирован: 19 окт 2015, 14:52
Откуда: Казахстан, Алматинская область
Благодарил (а): 172 раз.
Поблагодарили: 136 раз.

Re: Парсер (копия темы с DF2)

Сообщение t800 » 09 май 2022, 12:10

Скачиваешь страницы магазина, разбираешь при помощи XPath (на худой конец - регулярных выражений, но xpath удобнее, потому что отладчик хрома).


Сейчас попгулил про XPath если правильно понял через XPath в Mozilla надо смотреть откуда что надо брать.
Ну вот я взял любой странице название товара, описание и название картинки, куда это потом сохранять в текстовый файлик? А каких брать с разных страниц и так чтоб они не перепутались? Или это без разницы в каком порядке их брать? А тогда как их вставлять в новый сайт чтобы товар их нужнного раздела был в нужнм разделе . Делать провеку по названию раздела в файлике а потом вставлять товар и скачивать картинку что по ссылке для этого раздела из файлика?
Справочник и Форум Green Dragon
T-800 MOD для Heroes of Might and Magic 2

Основатель клуба "Армагеддон"

Основатель клуба "Пещера Гремлинов"

ИзображениеИзображение
Аватара пользователя
t800
Experienced
Experienced
 
Сообщения: 849
Зарегистрирован: 19 окт 2015, 14:52
Откуда: Казахстан, Алматинская область
Благодарил (а): 172 раз.
Поблагодарили: 136 раз.

Re: Парсер (копия темы с DF2)

Сообщение t800 » 09 май 2022, 12:12

Так ну я нагулил какой-то скрип который вроде бы умеет парсить товары из оzоn и яндек-маркет в VirtualMart я его поставил и запустил и вроде что-то делает правда скрипту 5 лет так что наверное поэтому он ничего с оzона спарсить не может, но оно мне вроде и надо мне же надо переделать чтоб он парсил с того сайта с которо мне сказали товары взять.

Прото я посмотрел тот его модуль которы вроде для оzоn

Вот его код:

Код: Выделить всё
<?php
    @unlink('stop.txt');
    ob_end_clean();
    require_once("config.php");
    mysql_connect($host,$login,$password);
    mysql_selectdb($database);

    #$mainstop = true;

        require_once("includes.php");

        echo "<b>".$_['menu']." OZON</b><br /><br />";

        $mass=$_GET['url'];
       
        $parse = new ozonparse();
        $parse->sleep = $_GET['sleep'];
        $parse->proxy = $_GET['proxy'];
        $parse->key = $_GET['key'];
        $parse->noimg = $_GET['noimg'];
        $parse->ceil = $_GET['ceil'];
        $parse->_ = $_;

    if(!empty($_GET['file'])) {
        $file = file_get_contents("files/".$_GET['file']);
        $strs = explode("\n",$file);
        foreach($strs as $str) {
            if(!empty($str)) {
                $_strs[] = strtolower(trim($str));
            }
        }
       
        $parse->strs = $_strs;

    }

foreach ($mass as $url)
{
$url = str_replace("%%","&",$url);
$parse->parse_list($url,$_GET['num']);
}
       



    # require_once("footer.php");
?>


И что-то не вижу а где тут назначаются поля которы надо парсить

Посмотрел код модуля который для яндекс а он почти и не отличается.


Код: Выделить всё
<?php
    require_once("config.php");
    @unlink('stop.txt');
    mysql_connect($host,$login,$password);
    mysql_selectdb($database);
    require_once("includes.php");
   
$cou['213']='Москва';
$cou['2']='Санкт-Петербург';
$cou['65']='Новосибирск';
$cou['54']='Екатеринбург';
$cou['51']='Самара';
$cou['66']='Омск';
$cou['43']='Казань';
$cou['56']='Челябинск';
$cou['39']='Ростов-на-Дону';
$cou['172']='Уфа';
$cou['38']='Волгоград';
$cou['50']='Пермь';
$cou['62']='Красноярск';
$cou['193']='Воронеж';
$cou['194']='Саратов';
$cou['35']='Краснодар';
$cou['240']='Тольятти';
$cou['143']='Киев';
$cou['157']='Минск';
$cou['162']='Алматы';

    echo "<b>".$_['menu']." Market.yandex.ru</b><br /><br />";
    $mass=$_GET['url'];
    $parse = new yamparse();
    $parse->sleep = $_GET['sleep'];
    $parse->proxy = $_GET['proxy'];
    $parse->key = $_GET['key'];
    $parse->noimg = $_GET['noimg'];
    $parse->countname=$cou[$_GET['yacout']];
    $parse->countnum=$_GET['yacout'];
    $parse->noimg = $_GET['noimg'];
    $parse->antikey = $Config['antigate'];
    $parse->ceil = $_GET['ceil'];
    $parse->_ = $_;
    if(!empty($_GET['file'])) {
        $file = file_get_contents("files/".$_GET['file']);
        $strs = explode("\n",$file);
        foreach($strs as $str) {
            if(!empty($str)) {
                $_strs[] = strtolower(trim($str));
            }
        }
       
        $parse->strs = $_strs;
    }

    foreach ($mass as $url)
{
$url = str_replace("%%","&",$url);
    if(substr_count($url,"guru.xml")) {
        $parse->parse_list($url,$_GET['num']);
    } else {
        $parse->parse_ext($url,$_GET['num']);   
    }
    }

?>


Я сейчас хочу попробовать свой модуль это скрипта сделать чтоб он с того сайта что мне сказали парсил.
Но не могу понять куда и как поля прописывать ну или хотябы где в этих модулях прописаны поля которые скрип берет с сайтов

А сам скрипт вот он:
parser85.zip
(660.34 КБ) Скачиваний: 126
Справочник и Форум Green Dragon
T-800 MOD для Heroes of Might and Magic 2

Основатель клуба "Армагеддон"

Основатель клуба "Пещера Гремлинов"

ИзображениеИзображение
Аватара пользователя
t800
Experienced
Experienced
 
Сообщения: 849
Зарегистрирован: 19 окт 2015, 14:52
Откуда: Казахстан, Алматинская область
Благодарил (а): 172 раз.
Поблагодарили: 136 раз.

Re: Парсер (копия темы с DF2)

Сообщение t800 » 09 май 2022, 12:13

Хммм... короче поставил этот скрип, настроил, скрипт работает но ничего не парсит даже с тех сайтов что у нем прописаны. Наверное слишком старый. Я посмотрел код этого старого скрипта и понял что проще будет написать новый чем разобраться почему не работает этот который старый.
Справочник и Форум Green Dragon
T-800 MOD для Heroes of Might and Magic 2

Основатель клуба "Армагеддон"

Основатель клуба "Пещера Гремлинов"

ИзображениеИзображение
Аватара пользователя
t800
Experienced
Experienced
 
Сообщения: 849
Зарегистрирован: 19 окт 2015, 14:52
Откуда: Казахстан, Алматинская область
Благодарил (а): 172 раз.
Поблагодарили: 136 раз.

Re: Парсер (копия темы с DF2)

Сообщение t800 » 09 май 2022, 12:14

Так я нашел на SF.net библиотеку PHP Simple HTML DOM Parser см. https://sourceforge.net/projects/simplehtmldom/

Скчал, положил на своем сайте в каталог /parser/library

Потом в каталоге parser создал файл test0.php c таким вот кодом

Код: Выделить всё
<?php

echo '<html xml:lang="ru-ru" lang="ru-ru" >';
echo '<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head>';

//подгружаем библиотеку
require_once 'library/simplehtmldom.php';

//создаём новый объект
$html = new simple_html_dom();
//загружаем в него данные
$html = file_get_html('http://site.ru/');
//находим все ссылки на странице и...
if($html->innertext!='' and count($html->find('a'))) {
foreach($html->find('a') as $a){
//... что то с ними делаем
echo 'Ура! Я что-то спарсил..<br/>';
}
}
//освобождаем ресурсы
$html->clear();
unset($html);
?>


Запустил это файл через браузер у скрипт мне выдал вот что:

http://wiki.kvkozyrev.org/parser/test0.php
Справочник и Форум Green Dragon
T-800 MOD для Heroes of Might and Magic 2

Основатель клуба "Армагеддон"

Основатель клуба "Пещера Гремлинов"

ИзображениеИзображение
Аватара пользователя
t800
Experienced
Experienced
 
Сообщения: 849
Зарегистрирован: 19 окт 2015, 14:52
Откуда: Казахстан, Алматинская область
Благодарил (а): 172 раз.
Поблагодарили: 136 раз.

След.

Вернуться в Технические вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron