Dram

Рейтинг
1115
Регистрация
28.06.2008

Итак регулярки начал понимать значительно лучше, перешел к curl

Делаю домашнее задание.

Есть 5 ссылок, нужно пройтись по ним курлом, вытащить title, h1 и текст и записать это в базу.

Вот наваял я код и не погу догнать два момента:

1. Какого лешего в базу пишется Array[1] вместо данных

2. Какого пишется два раза, я в упор не вижу где цикл повторяется. Вот что в базе:

<?php
$db = mysqli_connect('localhost', 'mysql', 'mysql', 'my_project')
or die ('Ошибка соединения с MySQL-сервером');

$links = [ 'http://code.mu/exercises/advanced/php/parsing/rabota-s-bibliotekoj-curl-v-php/1/1.php',
'http://code.mu/exercises/advanced/php/parsing/rabota-s-bibliotekoj-curl-v-php/1/2.php',
'http://code.mu/exercises/advanced/php/parsing/rabota-s-bibliotekoj-curl-v-php/1/3.php',
'http://code.mu/exercises/advanced/php/parsing/rabota-s-bibliotekoj-curl-v-php/1/4.php',
'http://code.mu/exercises/advanced/php/parsing/rabota-s-bibliotekoj-curl-v-php/1/5.php',
];

function getPageByUrl ($url)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($curl);
if ($result === false) { echo "Ошибка CURL: " . curl_error($curl);
return false;
} else {
return $result;
}
}

$i=0;
foreach ($links as $item){
$i++;
$pars = getPageByUrl ($item);
preg_match_all('~<title>(.*)</title>~m',$pars, $title, PREG_SET_ORDER, 0);
preg_match_all('~<h1>(.*)</h1>~m',$pars, $name, PREG_SET_ORDER, 0);
preg_match_all('~<div\s.*(.*)main(.*)>(.*)</h1>(.*)</div>~msU',$pars, $text, PREG_SET_ORDER, 0);

if ($i>=0 && $i<= count($links)) {
$db->query("INSERT INTO `page` (`id`, `name`, `h1`, `text`) VALUES ($i, '$title[0][1]', '$name[0][1]', '$text[0][4]');")
or die ('Ошибка запроса');

}
}

если вместо $db->query выведу запрос через echo - он выводиться 5 раз. От чего же в базу пишется два раза по 5 ?

rf-test.ru вроде нормальный...

---------- Добавлено 20.05.2019 в 14:14 ----------

polkari.ru

ziliboba0213:
А, так я скрипт не ставил :)

Даже затрудняюсь квалифицировать сей факт - что это мазохизм или извращение? :)))

ziliboba0213:
А как там экспортнуть? Чет не нашел 🤪

В скрипте Сергеича ссылка справа - Blocked advertiser URLs и оттуда уже можно все списком скопировать

---------- Добавлено 19.05.2019 в 12:04 ----------

Crystal_Lizard:
Заблокировано URL: 8551
воу воу чувак - делись добром :))) Сделаем бизнес билановодов нерентабельным!

ziliboba0213, кинь плиз свой список в личку!!! Я то думал я продвинутый юзер :)))

Sergio Suares, все указанные вами домены у меня давно в бане.

Я повторяю, не ленитесь банить все что тут выкладывают - доменов не бесконечное множество, они отлеживаются месяцок и снова в дело...

У меня сейчас Total 836 URLs blocked

Снова вопрос про регулярки, почему эта регуляка

<p\s*class(.*)more[^\s]>(.*)</p>

не цепляет эту конструкцию

<p class=\'more\' ><a href="interesting.php">подробнее...</a></p>

насколько я себе понимаю то что написал -это значит

сколько угодно пробелов после <p

затем что угодно между class и more

отсутствие пробелов после more

все что угодно внутри этого тега с данным классом.

Где ошибаюсь?

---------- Добавлено 18.05.2019 в 18:12 ----------

все - решил вопрос так -

<p\s*class(.*)more[^\s](.*)>(.*)</p>

или так даже лучше получилось

<p\s*class.{0,3}more[^\s](.*)>(.*)</p>

Спасибо!!!!!!!!!!

\s+.* это я правильно понимаю - точно один или более пробелов + 1 или более символов

Всего: 6928