include 'simple_html_dom.php';
$servername = ":)";
$username = ":)";
$password = ":)";
$conn = new mysqli($servername, $username, $password);
$conn -> query("USE admin_eda");
$conn->set_charset("utf8");
if ($conn->connect_error){
die("Connection failed: " . $conn->connect_error);
}
$html = new simple_html_dom();
$start = (int)file_get_contents("last.txt");
$er = 0;
$bdc = (int)file_get_contents("last.txt");
while($er <= 50){
$start++;
$url = "https://eda.ru/recepty/vypechka-deserty/brauni-brownie-".$start;
$ch = curl_init();
curl_setopt($ch,CURLOPT_USERAGENT, 'Mozilla/5.0 (Linux; Android 6.0.1; Q415 Build/MOB31K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/51.0.2704.106 Mobile Safari/537.36');
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($httpCode == 404) {
$er++;
}
else{
$html = str_get_html($result);
$link = $html -> find("link", 0);
$exploded = explode("/", $link->href);
$category = $exploded[4];
$headers = "";
$h_pre_divs = $html -> find(".g-first-page-block", 0);
$chd = $h_pre_divs -> find("p",0);
if(!is_object($chd)){
$g = $h_pre_divs -> children(0) -> children(0) -> attr;
$subg = substr($g['data-gall-photos-urls'], 7, -2);
$hurls = explode("jpg", "','//////////".$subg);
$numItems = count($hurls);
$i = 0;
foreach($hurls as $f){
if(strlen($f) > 3){
$s = substr($f, 13);
$headers .= $s."jpg";
$headers .= "##INS2##";
$headers .= "http://musicourlife.ru/eda/images/header-".$i."-".$start.".jpg";
if($i+1 != $numItems -1) {
$headers .= "##INS##";
}
$i++;
}
}
}
$name = $html -> find("meta[property=og:title]", 0) -> content;
$breadcrumbs = "";
$breadcrumbs_ao = $html -> find(".b-breadcrumbs", 0);
$breadcrumbs_as = $breadcrumbs_ao -> find("a");
foreach($breadcrumbs_as as $breadcrumb_a){
$breadcrumbs .= "##INS##";
$breadcrumbs .= $breadcrumb_a -> innertext;
}
if(strlen($breadcrumbs) > 0){
$breadcrumbs = substr($breadcrumbs, 7);
}
$energy = "";
$value_items = $html -> find(".value-item");
foreach($value_items as $value_item){
$energy .= "##INS##";
$value_spans = $value_item -> find("span");
$energy .= $value_spans[0]."##INS2##".$value_spans[(count($value_spans)-1)];
}
if(strlen($energy) > 0){
$energy = substr($energy, 7);
}
$servings = explode(" ", $html -> find(".b-recipe-page__ingredients", 0) -> children(0) -> children(0) -> innertext)[0];
if(strlen($servings) > 0){
$servings = substr($servings, 7);
}
$ingridients = "";
foreach($html -> find(".ingredients-list", 0) -> find("li") as $ingridient){
$ingridients .= "##INS##";
$ingri_spans = $ingridient -> find("span");
$ingridients .= $ingri_spans[0]."##INS2##".$ingri_spans[(count($ingri_spans)-1)];
}
if(strlen($ingridients) > 0){
$ingridients = substr($ingridients, 7);
}
$cooking_time = "";
$cook = $html -> find(".cooking-time", 0);
if(is_object($cook)){
$cooking_time = $cook -> innertext;
}
$instr = "";
$imgc = 0;
foreach($html -> find(".b-recipe-page__instruction", 0) -> children(2) -> find("li") as $instr_item){
$instr_item = $instr_item -> children(0) -> children(0);
if($instr_item->class == "s-inner-content"){
$instr .= "##INS##";
$instr .= "txt".$instr_item->innertext;
}
else if($instr_item->class == "b-photo-gall__img"){
$instr .= "##INS##";
$instr .= "img".$instr_item->attr['src'];
$instr .= "##INS2##";
$instr .= "http://musicourlife.ru/eda/images/recype-".$imgc."-".$start.".jpg";
$imgc++;
}
}
if(strlen($instr) > 0){
$instr = substr($instr, 7);
}
$bdc = $start;
$insert = "INSERT INTO `admin_eda`.`eda` (`name`,`category`,`headers`,`breadcrumbs`,`energy`,`servings`,`ingridients`,`time`,`instruction`) VALUES ('$name', '$category', '$headers', '$breadcrumbs', '$energy', '$servings', '$ingridients', '$cooking_time', '$instr');";
if(mysqli_query($conn, $insert)){
echo 'success';
}
else {
if ($conn->connect_error){
die("Connection failed: " . $conn->connect_error);
}
}
}
}
file_put_contents('last.txt', $bdc);
Суть: храню номер последнего рецепта в файле last.txt
, в скрипте его получаю и пока не пойдут 404 ошибки (50 штук) парсить каждый рецепт и добавлять в бд. Вот сейчас запустил, по сути 2 рецепта было спарсено, было выведено два success
но в бд записей почему-то 4, эти 2 и еще раз они же, тоесть не 1,1,2,2, а 1,2,1,2. В чем проблема?
Оставил костыль с проверкой по имени, знаю что плохо но работа стоит
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Здравствуйте, есть массив в ASM(уже инициализированный), вызывается функция С++ которая сортирует и возвращает уже отсортированный массивНаписал...
Может кто нибудь подсказать, что не так с этим алгоритмом? Проблема в том, что при запуске некоторые числа отображаются в командной строке...
Как передать двухмерный массив в функцию как параметр? пытался сделать ссылку, но выдает ошибкуКод программы ниже
Я долго всматривался в эту картинку и пытался понять, что же такое мультисписок, но до сих пор не понимаю, как это реализовать