- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
Mrtrick, ваши предложения получил. Обдумаю, как лучше, и сделаю.
Согласен, и у меня уже есть кое-какие идеи на счёт этого :) Сделаю в настройках возможность указать, какие функции выполнять, а какие нет.
Обновление 2.1.4.
Добавлены возможность указывать выборочные настройки (галочка "custom settings") и возможность включения-отключения работы отдельных частей скриптов в events.txt и thread_events.txt (галочка "tagged scripts") .
Выборочные настройки нужны для удобства при частом изменении отдельных настроек. Можно указывать хоть одну настройку, а можно хоть все.
Выборочные настройки либо заменяют основные, либо их значения добавляются к значениям основных, для чего нужно указать плюс в начале значения настройки:
При редактировании выборочных настроек можно самому в таблицу вписывать имена настроек, а можно нажать правой кнопкой мыши и выбрать из списка. Данные сохраняются в момент закрытия формы (через крестик тоже) и при смене, добавлении пресета. Для удаления настройки выделите всю строку и нажмите Delete на клавиатуре.
Tagged scripts: тут ставим галочки, какие блоки скрипта включить. Если галочка Tagged scripts не стоит, то все блоки работают. А если стоит, то работать будут только те блоки, которые отмечены.
Блоки для пометки скриптов так делаются:
[#УДАЛЕНИЕ_ИМЁН_САЙТОВ]
$output=RemSiteNames($output);
[/УДАЛЕНИЕ_ИМЁН_САЙТОВ]
[#ПРОКСИРОВАНИЕ_ИЗОБРАЖЕНИЙ]
$output=ImgPrx($output);
[/ПРОКСИРОВАНИЕ_ИЗОБРАЖЕНИЙ]
Открывающий тег с решётки начинается: [#Имя блока] , а закрывающий как обычно - [/Имя блока]. Нижний пробел, как в примере, делать не обязательно. Можно любые символы использовать.
Сделал, чтобы файлы настроек лежали в папке settings, а шаблоны в templates. Появилась папка presets для выборочных настроек.
Протокол tls теперь не надо в скрипте прописывать. Он прописан в last_settings.txt: *security_protocol_type=tls12
Появились новые настройки:
*MainBlockDetect=
*DisableAutoTrimTop=0
*DisableAutoTrimBottom=0
*HardTrim=
*DisableAutoHeading=0
Если программа не находит контент, то можно указать html блок, из которого его брать:
*MainBlockDetect=какая-либо строка из основного блока
Можно несколько строк указать через запятую: *MainBlockDetect=какая-либо строка из основного блока,ещё текст
В таком случае контент будет браться из блока, содержащего все указанные строки. Пример:
<div class="c1">
<p>Этот текст есть перед всеми статьями.</p>
<h1>Заголовок статьи</h1>
Текст статьи.
</div>
Настройка: *MainBlockDetect=class="c1"
Если class="c1" есть не только у главного блока, то указываем несколько строк:
*MainBlockDetect=class="c1",Этот текст есть перед всеми статьями
Допустим, что на одних страницах выводится class="c1" , а на других class="c2". Тогда нужно задать настройку так:
*MainBlockDetect={class="c1"},{class="c2"}
Так главным будет назначаться блок, который содержит либо class="c1" , либо class="c2".
Можно указать: *MainBlockDetect={class="c1",текст есть перед},{class="c2",текст есть перед}
Так главным будет назначаться блок, который содержит либо сроку "class="c1"" и строку "текст есть перед", либо строку "class="c2"" и строку "текст есть перед".
*DisableAutoTrimTop=1 - отключает автоматическую подчистку (автообрезку) начала статьи.
*DisableAutoTrimBottom=1 - отключает автоматическую подчистку конца статьи. Эта настройка нужна, если в конце статьи удаляется нужный контент (например, бывает, если статья заканчивается таблицей).
У этих настроек есть расширенная форма. Можно указать начало и конец статьи.
Допустим, нужно достать только текст статьи из этого кода:
<div class="test">
<div class="c1">
Текст статьи.
</div>
<div class="comments">
Комментарии.
</div>
</div>
Ставим:
*DisableAutoTrimTop=1{<div class="c1">}
*DisableAutoTrimBottom=1{<div class="comments">,</div>}
Первая настройка значит, что статья начинается после строки <div class="c1">. Другими словами, статья обрезается сверху по <div class="c1"> включительно. Чтобы <div class="c1"> не удалялся, то надо добавить к настройке {L}: *DisableAutoTrimTop=1{<div class="c1">}{L}
В настройке DisableAutoTrimBottom указано две строки. Это пример ступенчатой обрезки (если нельзя одной строкой задать конец статьи). Сначала с конца статьи ищется <div class="comments">, а потом </div>. В DisableAutoTrimTop тоже можно делать ступенчатую обрезку, но поиск строк идёт с начала статьи.
*DisableAutoHeading=1 - отключает добавление заголовка h1, которое делается, если в статье нет такового.
Есть ещё один, более низкоуровневый способ достать со страницы нужные данные.
*HardTrim={<div class="c1">}-{<div class="comments">,</div>}
В первом блоке {} указывается обрезка сверху, а во втором снизу.
Этот пример аналогичен настройкам:
*DisableAutoTrimTop=1{<div class="c1">}
*DisableAutoTrimBottom=1{<div class="comments">,</div>}
{L} тоже можно добавлять: *HardTrim={<div class="c1">}{L}-{<div class="comments">,</div>}{L}
HardTrim обрезает код всей страницы сразу после его получения, до всех обработок. Поэтому в нём можно задавать html-комментарии, а в DisableAutoTrimTop и DisableAutoTrimBottom нельзя, т.к. комментарии удаляются при обработке страницы. Автообрезка работает для кода статьи, а жёсткая обрезка (HardTrim) работает с кодом всей станицы. Автообрезка работает после жёсткой обрезки, поэтому если она не нужна (а при HardTrim-е она как правило лишняя), её стоит отключить.
---------- Добавлено 26.01.2019 в 14:25 ----------
Для того, чтобы пользоваться новой версией, скопируйте в папку с ней файл activation.dat из папки со старой версией. Либо создайте в папке со старой версией папки presets, settings, templates и скопируйте в неё новый файл MassArticleParser.exe.
Сделал обновление 2.1.4.4. Пофиксил баги. Кто успел скачать обновление 2.1.4, скачайте версию 2.1.4.4.
Обновление 2.1.4.
При редактировании выборочных настроек можно самому в таблицу вписывать имена настроек, а можно нажать правой кнопкой мыши и выбрать из списка.
У меня при нажатии на правую кнопку нет списка с названиями настроек.
Записал видео https://i.imgur.com/dpJvQiF.gifv
P.S обновление мощное, спасибо что прислушивался к пожеланиям и реализовал на высшем уровне!
У меня при нажатии на правую кнопку нет списка с названиями настроек.
Нажмите сразу, когда ячейка ещё не выделена, и нет мигающего курсора, а не после перевода ячейки в режим редактирования.
Нажмите сразу, когда ячейка ещё не выделена, и нет мигающего курсора, а не после перевода ячейки в режим редактирования.
Получилось, не сразу понял.
Обновление 2.1.5.
Исправлена ошибка, из-за которой не скачивались изображения, пути которых начинаются с двойного слэша, при https.
В режиме скачивания картинок теперь можно указать белый список расширений:
*downloadimages=all{images,100,100,jpg,gif,png,jpeg}
Так будут скачиваться только изображения с расширениями jpg, gif, png и jpeg.
Появилась настройка: *OriginalCode=1
Она отключает обработку контента (чистку, замену относительных путей на абсолютные и прочее).
Сделал кликабельными "Profile" и "Template" и добавил ссылку "View site list", чтобы открывать соответствующие файлы.
В скрипте появилась возможность вывода статуса потока (работает только в thread_events.txt):
SetStatus('Hello, world!');
Эта возможность полезна в случае, когда, например, после завершения парсинга сайта запускается какая-то долгая функция. Вот пример такой функции - MoveImages. Эта функция создаёт для каждой статьи свою папку и помещает в неё картинки этой статьи. Файл статьи переименовывается в транслит с подстановкой случайной даты: 2018-12-15-nazvanie-statii.htm. Пути изображений меняются. В настройках должно быть включено сохранение статей каждого сайта в отдельную папку: *savetofolders=1 . Вызов этой функции нужно прописать в событии завершения парсинга сайта:
function on_Complete(error){
if(error==1){return();}
MoveImages();
}
В дополнение к функции парсинга тегов изображений написал функцию загрузки изображений. Она скачивает изображения из статьи и заменяет в тегах их пути. Пример использования:
$output=GetAllImages($page_data);
$output=DownloadImages($output,$article_dir+'\images');
В дополнение к функции парсинга тегов изображений написал функцию загрузки изображений. Она скачивает изображения из статьи и заменяет в тегах их пути. Пример использования:
$output=GetAllImages($page_data);
$output=DownloadImages($output,$article_dir+'\images');
Полезная функция, очень пригодилась, вопрос с картинками полностью программа закрыла, да что тут говорить и со статьями тоже :)
Обновление 2.1.6.
Исправил работу настройки badblocksdetect. Она не учитывала сам тег, а только что внутри. Пример:
<div id="test">
This is test.
</div>
Раньше *badblocksdetect=id="test" не сработало бы, а теперь так можно.
В скриптинге:
Исправил работу функции count, которая возвращает кол-во элементов в массиве. Она не работала с массивами, которые начинаются с $$$.
Добавил функции:
indexof(массив, значение) - возвращает номер элемента в массиве;
sort(массив) - сортирует массив. А sort(массив,массив) - сортирует пару массивов (один содержит ключи, а другой - соответствующие элементы) по ключам в первом массиве;
reverse(массив) - изменяет порядок элементов в массиве на обратный;
implode(разделитель, массив) - объединяет элементы массива в строку;
unset(переменная) - удаляет переменную.
Добавил переменные: $article_url, $article_body, $article_title, $article_h, $article_key соответствующие макросам в шаблоне. $article_url в отличие от $page_url в случае включённой настройки urlinurl вернёт очищенный урл.