|
| Дата |
|
USD/RUB | 88.6852 | BTC/USD | 67794.8860 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
21.08.2020, 13:18
|
Start Post: Есть ли программа для отбора кейвордов?
|
Senior Member
Регистрация: 29.08.2016
Сообщений: 1,616
Бабло: $323550
|
Столкнулся с проблемой, что из всех мною найденных программистов в интернете, никто не знает, как отобрать кейворды из 1 файла, которые не повторялись бы с кейвордами во втором файле и сохранились бы в третьем файле.
Звучит вроде так елементарно.. но никто не может сделать... это реально неподсильная задача?
|
|
|
27.08.2020, 12:50
|
#52
|
Senior Member
Регистрация: 29.08.2016
Сообщений: 1,616
Бабло: $323550
ТС -->
|
ТС
Цитата:
Сообщение от dmjROV
вот, на скорую руку, питон, должно работать.
|
у меня выбивает ошибку:
PHP код:
File "test.py", line 8, in <module>
with open(main_file, encoding='utf-8') as f1, open(filter_file, encoding='utf-8') as f2, open(out_file, 'w', encoding='utf-8') as f3:
TypeError: 'encoding' is an invalid keyword argument for this function
|
|
|
27.08.2020, 14:59
|
#53
|
Member
Регистрация: 29.04.2008
Сообщений: 46
Бабло: $5790
|
Цитата:
Сообщение от disqus
Цитата:
Сообщение от Novgorodcev
Если так то по любому первый скрипт воздух молотил ))
Давай сформулируем четкое ТЗ, это половина дела )))
Пока получается так:
Надо убрать из файла ссылки.тхт те строки, которые содержат строки из файла кейворды.тхт, и сохранить результат в файл. Порядок строк в файле результат не важен. Верно?
|
сорян, выпал на несколько дней из онлайна.
давай ТЗ сформулируем.
1. Есть пачка ссылок на доры, которые я спамлю-продвигаю. она находится в файле dory.txt в виде ссылок <a href="dory1.com">keyword</a>
2. Есть файл с кейвордами keywords.txt из которого я беру кейворды для генерации новых доров.
3. Т.к я заметил, что доргены очень часто берут одни и теже кейворды, даже выбирая рандомно,я решил попробовать делать доры только с уникальными кейвордами.
По-этому цель такая. Брать кейворды, который ещё не использовались в дорах, и генерить по ним доры.
Значит цель такая: отобрать для генерации доров 150,000 кеев из пачки keywords.txt, которые не повторялись бы в файле dory.txt
А уже надо для этого вытаскивать кейворды из анкоров или что-либо ещё , совершенно не важно.
Вижу скрипт на пхп сделал Matt Cuts , надо его проверить. И на выходных один прогер сделал прогу на Windows для этого. Тоже её сейчас проверю...
Впервые имел дело с челом, который делает проги на windows ... ))
|
PHP код:
<?php
$dory = 'dory.txt';
$keywords = 'keywords.txt';
$new_keywords = 'new_keywords.txt';
//1 да, 0 нет. проверять с учётом регистра
//Например если 0 то,
//Бабло и бабло - это одинаковые слова для проверки
//если 1, то это будут уже два разных слова для проверки и оба будут записаны в new_keywords.txt
$register_check = 0;
//Бля тут комменты
$dory_arr = []; //массив для кейвордов dory.txt
$keywords_arr = []; //массив для кейвордов из keywords.txt
//берём весь текст из dory.txt
$text = file_get_contents($dory);
//проверка не пустой ли файл
if(!$text) die("dory.txt пустой");
//выпарсим из него все кейводры в ссылках
preg_match_all("~>(.*?)</a>~im", $text, $match, PREG_SET_ORDER);
//ещё проверка на наличие кейвордов в ссылках
if(empty($match[0][1])) die("Не нашёл кейвордов в ссылках и тут нам делать нех.");
//теперь переберём все найденые кейворды и добавим их в массив $dory_arr чтобы потом можно было их использовать как фильтр
foreach ($match as $keyword) {
$key = trim($keyword[1]);
//если регистр важен то все кейводры из дори запишем в нижнем регистре, чтобы после сравнить
if($register_check) {
$dory_arr[] = mb_strtolower($key, "utf-8");
} else {
$dory_arr[] = trim($key);
}
}
$dory_arr = array_unique($dory_arr); //на всякий случай почистим массив от дубликатов, вдруг в ссылках были кейворды 2 раза
//теперь берём новые кейворды из keywords.txt
$text = file_get_contents($keywords);
//ещё проверка на наличие кейвордов в keywords.txt
if(!$text) die("файл keywords.txt пустой, а должно быть что то....");
//разобьём строку кейвордов на массив
$keywords_arr = explode("\n", $text);
//переберём массив
foreach ($keywords_arr as $keyword) {
$keyword = trim($keyword);
if(!$keyword) continue; //если пустая строка то пропускаем
//если регистр, то для проверки сделаем кейворд в нижнем регистре
if($register_check) {
$keyword = mb_strtolower($keyword, 'utf-8');
}
//если кейворда нет в списке кейводров dory.txt, то запишем его в new_keywords.txt
if(!in_array($keyword, $dory_arr)) {
echo "Добавил новый кейвод: {$keyword}".PHP_EOL; // это просто для информации в консоли
//новый кейворд дописывается к предыдушим, поэтом перед новым запуском нужно удалять файл new_keywords.txt
file_put_contents($new_keywords, $keyword."\n", FILE_APPEND);
}
}
return print("\n\n\nФиниш");
Накидал комментов к коду, чтобы потом сам мог править код.
Последний раз редактировалось jared5000; 27.08.2020 в 15:08.
|
|
|
27.08.2020, 16:52
|
#54
|
Senior Member
Регистрация: 22.06.2008
Сообщений: 603
Бабло: $122240
|
Цитата:
Сообщение от disqus
Цитата:
Сообщение от dmjROV
вот, на скорую руку, питон, должно работать.
|
у меня выбивает ошибку:
PHP код:
File "test.py", line 8, in <module>
with open(main_file, encoding='utf-8') as f1, open(filter_file, encoding='utf-8') as f2, open(out_file, 'w', encoding='utf-8') as f3:
TypeError: 'encoding' is an invalid keyword argument for this function
|
у тебя python 2 походу, нужен 3ий.
|
|
|
28.08.2020, 15:01
|
#55
|
Senior Member
Регистрация: 29.08.2016
Сообщений: 1,616
Бабло: $323550
ТС -->
|
ТС
Цитата:
Сообщение от jared5000
Накидал комментов к коду, чтобы потом сам мог править код.
|
Идеально. Спасибо большое. Дай wmz скину на пиво
У меня появилась ещё одна идея, только я не знаю как её воплотить или сформулировать Быть может подскажешь jared5000, или кто-то ещё.
У меня есть пачка из 100 доменов с дорами.
Некоторые из них стрельнули в топ, а некоторые вообще 0.
Я сгенерировал на этих доменах разное количество доров, половина из которых повторяется. (т.к дорген брал одни и теже кейворды рандомом.)
Все ссылки на доры хранятся в файле dory.txt в формате ссылок <a href="dor1.com">keyword</a>
Хотелось бы убрать дубли тех страниц, домены которых не выстрелили.
Понимая, что api для скрипта дело геморное, можно хотябы в ручную.
Ввести список доменов, где страницы с повторяющими keyword оставить, а другие удалить.
Тем самым оставив домены по которым идет трафик, и оставить домены по которым не идет трафик, но с уникальными ключами.
пример.
загружаемый файл dory.txt
<a href="horoshij-dor.com">keyword-1</a>
<a href="plohoj-dor.com">keyword-1</a>
<a href="plohoj-dor.com">keyword-2</a>
на выходе result.txt
<a href="horoshij-dor.com">keyword-1</a>
<a href="plohoj-dor.com">keyword-2</a>
Последний раз редактировалось disqus; 28.08.2020 в 15:10.
|
|
|
28.08.2020, 17:17
|
#56
|
Member
Регистрация: 29.04.2008
Сообщений: 46
Бабло: $5790
|
Цитата:
Сообщение от disqus
Цитата:
Сообщение от jared5000
Накидал комментов к коду, чтобы потом сам мог править код.
|
Идеально. Спасибо большое. Дай wmz скину на пиво
У меня появилась ещё одна идея, только я не знаю как её воплотить или сформулировать Быть может подскажешь jared5000, или кто-то ещё.
У меня есть пачка из 100 доменов с дорами.
Некоторые из них стрельнули в топ, а некоторые вообще 0.
Я сгенерировал на этих доменах разное количество доров, половина из которых повторяется. (т.к дорген брал одни и теже кейворды рандомом.)
Все ссылки на доры хранятся в файле dory.txt в формате ссылок <a href="dor1.com">keyword</a>
Хотелось бы убрать дубли тех страниц, домены которых не выстрелили.
Понимая, что api для скрипта дело геморное, можно хотябы в ручную.
Ввести список доменов, где страницы с повторяющими keyword оставить, а другие удалить.
Тем самым оставив домены по которым идет трафик, и оставить домены по которым не идет трафик, но с уникальными ключами.
пример.
загружаемый файл dory.txt
<a href="horoshij-dor.com">keyword-1</a>
<a href="plohoj-dor.com">keyword-1</a>
<a href="plohoj-dor.com">keyword-2</a>
на выходе result.txt
<a href="horoshij-dor.com">keyword-1</a>
<a href="plohoj-dor.com">keyword-2</a>
|
PHP код:
<?php
$dory = 'dory.txt';
$bad_domains = "plohoy_domen.txt"; //список плохих доменов
$dory_good = 'clean_dory.txt'; // чистый dory.txt
//берём всё из дори
$cont_of_dory = file_get_contents($dory);
// проверка на пустоту
if(!$cont_of_dory) die("dory пустой :(");
// разобьём ссылки на строки
$urls = explode("\n", $cont_of_dory);
// возьмём список плохих доменов
$text = file_get_contents($bad_domains);
// ещё проверка на пустоту
if(!$text) die("plohoy_domen.txt пустой :(");
// розобьём плохие домены на строки
$bad_domains_arr = explode("\n", $text);
// почистим
$bad_domains_arr = array_map('trim', $bad_domains_arr);
//теперь соберём все кейворды из dory.txt
preg_match_all("~>(.*?)</a>~im", $cont_of_dory, $match, PREG_SET_ORDER);
//массив в котором будут храниться все слова и их количество повторений
//например если кейворд встречается два раза то у него будет значение 2, кароче это чтобы потом отсеять дубликаты
$wordstat = [];
foreach ($match as $m) {
if(empty($m[1])) continue;
$word = trim($m[1]);
@$wordstat[$word]++; //тут какой то непобеждаемый нотис, хз как исправить так что просто заглушил его.
}
// теперь пошли по всем ссылкам из dory.txt
foreach ($urls as $key => $url) {
//ну и заодно запустим перебор по всем плохим доменам
foreach ($bad_domains_arr as $bad) {
// если строка содержит адрес плохого домена
if(stristr($url, $bad)) {
// возьмём кейворд из этой строки
preg_match("~>(.*?)</a>~im", $url, $match);
// если смогли взять кейворд
if(!empty($match[1])) {
// и если такой кейворд встречается чаще 1 раза
if($wordstat[trim($match[1])] > 1) {
//удалим строку ссылки
// получается в этой ссылке есть плохой домен и кейворд который встречался больше 1го раза.
unset($urls[$key]);
echo "Удалил строку {$url}".PHP_EOL;
}
}
}
}
}
// объеденим ссылки массива и запишем в файл clean_dory.txt
// при каждом запуске содержимое clean_dory.txt будет перезаписываться.
file_put_contents($dory_good, join("\n", $urls));
return print("\n\n\nФиниш");
Вроде как то так.
Напиши потом работает или нет, самому инетресно.
Я проверял на таких данных и вроде работало.
Цитата:
загружаемый файл dory.txt
<a href="horoshij-dor.com">keyword-1</a>
<a href="plohoj-dor.com">keyword-1</a>
<a href="plohoj-dor.com">keyword-2</a>
на выходе result.txt
<a href="horoshij-dor.com">keyword-1</a>
<a href="plohoj-dor.com">keyword-2</a>
|
|
|
|
20.09.2020, 20:53
|
#57
|
Юниор
Регистрация: 20.09.2020
Сообщений: 5
Бабло: $1510
|
есть стоит погуглить, либо можно самому написать простенький скрипт
|
|
|
|