developer
#1
Assalomu alaykum do'slar forumda adashmasam parser,grabber yaratish haqidagi mavzular yo'q shu mavzuda parser va grabber yaratishni o'rganamiz.
birinchi bo'lib o'zim bilgan oddiy grabber yaratishni ko'rsatib bersam
  1. <?php
  2. #### grablanayotgan sayt manzili, sahifasi
  3. $uzg = file_get_contents('http://site.uz'.$_SERVER['QUERY_STRING']);
  4. echo $uzg;
  5. ?>


shu eng oddiy grabber
qirqishlar, o'zgartirishlarsiz

Grabberni asosini tashkil etuvchi funksiya bu
3 kun 4 soat 45 daqiqa 43 soniyadan keyin yozdi:
grabber parserchilar bormi marhamat bilimlarizni o'rtoqlashing
3 kun 10 soat 7 daqiqa 34 soniyadan keyin yozdi:
oddiy grabberlarning eng sodda 3ta funksiyasi:
  1. <?php
  2. #1
  3. $uzg = file_get_contents('sayt.uz'.$_SERVER['QUERY_STRING']); /// grabberning asosiy ishlash funksiyasi grablayotgan saytingizni sizni saytingizda ochib beradi
  4. #2
  5. preg_match(|'olib tashlanadigan qism boshi'(.*?)'oxiri'|is,'olib tashlangan qism orniga yoziladi',$uzg); //regulyarniy virojeniya funksiyasi deyiladi
  6. #3
  7. str_replace(search,replace,subject);
  8. //subject -- manba yani $uzg ga tenglab olgan qism
  9. //search --$uzg dan qidirilayotgan qism
  10. //replace-- searchga yozilgan so'zni o'rniga qo'yiluvchi belgi yoki so'z
  11. ?>

3 kun 10 soat 21 daqiqa 47 soniyadan keyin yozdi:
grabber yasash funksiyalari saytni ctrl+u qilib korilgandagi yani saytni skaner qilib korilgandagi html,css,js kodlari bilan ishlaydi menimcha ko'pchilikka yangi o'rganayotganlarga qirqib olish o'rniga qo'yish qiyin tuyulsa kerak chunki o'zimham qirqib olishni yaqindagina o'rgadim va sizlarga ham o'rgatishni istadim
3 kun 10 soat 37 daqiqa 18 soniyadan keyin yozdi:
sizlarga bitta sodda grabber yasab ko'rsatsam qirqib olishni tushunib olishingiz uchun

masalan siz falonchi.uz saytini skanerlab olsangiz, yoki kompda bolsangiz osha saytga kirib ctrl+u qilishning ozi kifoya sizga saytning ochiq kodlarini chiqarib beradi

masalan siz grablayotgan saytni skaner qilinganda quyidagicha kodlar chiqdi deylik

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h3>reklama</h3>
<h3>reklama</h3>
<h1>ASSALOMU ALAYKUM</h1>
<p> Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br>
Facere ipsam, iusto ab quas excepturi aperiam. Minima in repellat libero, perspiciatis, dolores nam, sapiente labore accusantium sed placeat iusto nisi a.Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br>
Maiores velit, ea aliquam culpa perferendis nobis ab exercitationem possimus quam, ipsam sunt deserunt, alias itaque quaerat nihil facilis eveniet nemo beatae?Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br>
Dignissimos modi sit corrupti asperiores, cumque id, enim recusandae reprehenderit unde totam necessitatibus qui expedita, ad. Vel nam optio quia eligendi, molestias?Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br>
Ipsam obcaecati, dolores asperiores rerum dolorum deserunt.
<br> Ullam fugit commodi nihil nobis.
<br> Labore tempora, odio eius? Culpa aperiam esse voluptate, at ad!Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br>
Sed fugiat, fuga iste enim dignissimos qui ullam inventore adipisci reprehenderit vitae quasi ducimus itaque maiores perferendis quis quia possimus officia illum!Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Rerum, sapiente neque provident. <br>
Ex, quos ut aliquid explicabo, cupiditate numquam, iure voluptatem consectetur atque, quae perferendis nulla iste distinctio dolorum voluptas.Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br>
Recusandae velit ducimus, consequatur id animi facilis dolor doloremque corrupti impedit odio cum, sed quam deserunt ipsam quia consequuntur perspiciatis repudiandae voluptatibus.</p>
<span>reklamalar</span>
</body>
</html>

aytaylik sizga faqat h1 teglari ichidagi va p tegi orasidagi sozlar saytingizda chiqishini hohlaysiz demak qolgan qismini kesib tashlay kerak bu preg_match() funksiyasi orqali qilinadi

demak yuqoridagi skannerlangan kodlardan keraksizlarini qirqib tashlayman
  1. <?php
  2. //birinchi yuqori qismdan <!DOCTYPE html> dan boshlanib </h3> tegigacha kesib tashlayman
  3. $uzg = file_get_contents(''.$_SERVER['QUERY_STRING']);
  4. preg_match(|'<!DOCTYPE html>'(.*?)'</h3>'|is,'',$uzg); // qirqib tashlangan belgilarni orniga hechnarsa yozmiyman men shuning uchun is dan keyin '' bosh qiymat qoydim
  5. //va pastki qismdan kerakmas joylarni qirqib tashlayman
  6. //span tegidan boshlab html ning yopilish tegigacha
  7. preg_match(|'<span>'(.*?)'</html>'|is,'',$uzg);
  8. //va garblangan malumotni ekranga chiqaramiz
  9. echo $uzg;
  10. ?>


va bizda faqat quyidagi yozuvlar ekranga chiqadi
ASSALOMU ALAYKUM
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br>
Facere ipsam, iusto ab quas excepturi aperiam. Minima in repellat libero, perspiciatis, dolores nam, sapiente labore accusantium sed placeat iusto nisi a.Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br>
Maiores velit, ea aliquam culpa perferendis nobis ab exercitationem possimus quam, ipsam sunt deserunt, alias itaque quaerat nihil facilis eveniet nemo beatae?Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br>
Dignissimos modi sit corrupti asperiores, cumque id, enim recusandae reprehenderit unde totam necessitatibus qui expedita, ad. Vel nam optio quia eligendi, molestias?Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br>
Ipsam obcaecati, dolores asperiores rerum dolorum deserunt.
<br> Ullam fugit commodi nihil nobis.
<br> Labore tempora, odio eius? Culpa aperiam esse voluptate, at ad!Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br>
Sed fugiat, fuga iste enim dignissimos qui ullam inventore adipisci reprehenderit vitae quasi ducimus itaque maiores perferendis quis quia possimus officia illum!Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Rerum, sapiente neque provident. <br>
Ex, quos ut aliquid explicabo, cupiditate numquam, iure voluptatem consectetur atque, quae perferendis nulla iste distinctio dolorum voluptas.Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br>
Recusandae velit ducimus, consequatur id animi facilis dolor doloremque corrupti impedit odio cum, sed quam deserunt ipsam quia consequuntur perspiciatis repudiandae voluptatibus.
Davi_Uz
#2
parser haqida kim ma'lumot bera oladi??? l
developer
#3
Davi_Uz, # Davi_Uz (09.05.2019 / 17:20)
parser haqida kim ma'lumot bera oladi??? l
parser bu grabberning akasi garablangan malumotlarni o'zingizning bazangizga yozib borish yani malumotlardan to'liq kopiya olish.
grabberda esa shunchaki boshqa saytni sizni saytizda ko'rsatish holos
Davi_Uz
#4
developer, # developer (09.05.2019 / 19:13)
Davi_Uz, parser bu grabberning akasi garablangan malumotlarni o'zingizning bazangizga yozib borish yani malumotlardan to'liq kopiya olish.
grabberda esa shunchaki boshqa saytni sizni saytizda ko'rsat
uni yaxshi bilaman.... (rahmat)
Parser buyruq kodlari bazaga yoxishga mysql koldlari shular haqida kim ma'lumot bera oladi?
developer
#5
Davi_Uz, # Davi_Uz (10.05.2019 / 08:38)
developer, uni yaxshi bilaman.... (rahmat)
Parser buyruq kodlari bazaga yoxishga mysql koldlari shular haqida kim ma'lumot bera oladi?
me hali to'liq parser tuzishni o'rganganim yo'q lekin tushuncha bor grablangan sahifani to'liq keraksiz joylarini qirqib kerakli malumotlarni explode(); funksiyasi orqali massiv korinishiga ovolib insert orqali bazaga yozib olsa b'ladi.
bu oddiy matnli malumotlarni parser qilish uchun

sekin sekin o'rganamiz izlanib
Davi_Uz
#6
developer, parserda yangilikga erishsangiz xabordor qiling.... kuzatib boramiz menham izlanayabman... lekin uncha tushunmayabman...
BestMaster
#7
developer, Xamma dasturchi xarxil yozadi. Lekin explode function ishlatish shartmas elkin parser qilish uchun
developer
#8
BestMaster, # BestMaster (11.05.2019 / 08:42)
developer, Xamma dasturchi xarxil yozadi. Lekin explode function ishlatish shartmas elkin parser qilish uchun
unda malumotlarni massiv ko'rinishiga o'tkizmastdan qanday bazaga yozib olish mumkin?
programm011
#9
  1. preg_match('#<h1>(.*?)<h1>(.*?)<p>(.*?)</p>$#si',$uzg,$array);
  2. $title = $array[1];
  3. $text = $array[3];
  4. mysql_query("INSERT INTO `table` SET `title` = '".$title."', `text` = '".$text."'");
RM_FANAT
#10
Birorta tarqalgan parser yoqmi? Uyog' buyog'ini titkalab parser yasashni o'rganish uchun
developer
#11
programm011, # programm011 (13.05.2019 / 21:03)
preg_match('#<h1>(.*?)<h1>(.*?)<p>(.*?)</p>$#si',$uzg,$array);
$title = $array[1];
$text = $array[3];
mysql_query("INSERT INTO `table` SET `title` = '".$title."', `text` = '".$text."'");
$arrayni qattan oldiz?
programm011
#12
developer, preg_match('#<h1>(.*?)<h1>(.*?)<p>(.*?)</p>$#si',$uzg,$array);
sho`ttan
programm011
#13
Мастербек, https://www.google.com/search?q=%D0%BF%D0%B8%D1%88%D0%B5%D0%BC+%D0%BF%D0%B0%D1%80%D1%81%D0%B5%D1%80+%D0%BD%D0%B0+php&rlz=1C1GGRV_enUZ837UZ837&oq=pishem+par&aqs=chrome.2.69i57j0l5.6628j0j7&sourceid=chrome&ie=UTF-8
BestMaster
#14
developer, Pasta yozibdi namunani
developer
#15
BestMaster, # BestMaster (28.05.2019 / 22:32)
developer, Pasta yozibdi namunani
johncms kutubxonasidagi maqolalarni bazaga yozib oladigan parser tuzish kerak
51 soniyadan keyin yozdi:
o'zim uni qanday yasash boyicha miyada algoritmi borku amalga qollay olmayapman
4 daqiqa 45 soniyadan keyin yozdi:
  1. Запрос в MySQL-базу на создание таблицы для цитат
  2.  
  3. CREATE TABLE IF NOT EXISTS `bash` (
  4.  
  5. `id` int(11) NOT NULL AUTO_INCREMENT,
  6.  
  7. `quote_id` int(11) NOT NULL,
  8.  
  9. `quote_text` mediumtext NOT NULL,
  10.  
  11. PRIMARY KEY (`id`)
  12.  
  13. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
  14.  
  15.  
  16.  
  17.  
  18.  
  19. PHP-код парсинга
  20.  
  21. <?php
  22.  
  23. //Отключаем лимит ожидания и объявляем переменные
  24.  
  25.  
  26. $content=NULL;$num_pages=NULL;
  27.  
  28. //Подключение к базе
  29.  
  30. //Подключаемся к базе данных
  31.  
  32. define ("HOST", "localhost");
  33.  
  34. define ("DATABASE", "ваша база данных");
  35.  
  36. define ("MYSQL_USER", "ваш юзер");
  37.  
  38. define ("MYSQL_PASS", "ваш пароль");
  39.  
  40. mysql_connect(HOST, MYSQL_USER, MYSQL_PASS);mysql_query("set names utf8");mysql_select_db(DATABASE);
  41.  
  42. //Узнаём кол-во страниц
  43.  
  44. $content=file_get_contents('http://bash.im/');
  45.  
  46. preg_match('|max="(.*?)"|is',$content,$num_pages);
  47.  
  48. //Парсим каждую страницу
  49.  
  50. for ($i=1; $i <= $num_pages[1]; $i++){$i2=false;
  51.  
  52. //Грузим страницы, вырезаем цитаты
  53.  
  54. $content=file_get_contents('http://bash.im/index/'.$i);
  55.  
  56. $quotes=explode('<span class="date">',$content);
  57.  
  58. foreach($quotes as $quote){
  59.  
  60. if($i2==false){$i2=true;continue;}
  61.  
  62. //Номер цитаты
  63.  
  64. preg_match('|class="id">#(.*?)</a>|is',$quote,$quote_id);
  65.  
  66. //Текст цитаты
  67.  
  68. preg_match('|<div class="text">(.*?)</div>|is',$quote,$quote_text);
  69.  
  70. //Конвертация текста в UTF-8 и экранирование символов
  71.  
  72. $quote_text=strip_tags(addslashes(htmlspecialchars(trim(iconv("windows-1251","UTF-8",$quote_text[1])))));
  73.  
  74. //Вписываем в базу
  75.  
  76. if($quote_text!=NULL){mysql_query("INSERT INTO `bash`(`id`,`quote_id`,`quote_text`) VALUES (NULL,'{$quote_id[1]}','{$quote_text}')");}
  77.  
  78. }
  79.  
  80. //От перенагрузки
  81.  
  82. sleep(2);
  83.  
  84. }
  85. ?>


shu kodni johncmsga moslash kerak
12 soat 14 daqiqa 16 soniyadan keyin yozdi:
sozni har hil belgilardan qanday tozalaydi qoshtirnoqlani orniga galati belgilar chiqib qolyapti
XuSha
#16
developer, masalan deylik mp3 grabber tuzganda bosh sahifadagi kornishini grabladik keyin uni ichki korinishini grablap keyin ularni qanday qilib birlashtiramis, shu haqida batafsilroq malumot berolmisizmi kodlar bilan
developer
#17
XuSha, # XuSha (30.05.2019 / 10:51)
developer, masalan deylik mp3 grabber tuzganda bosh sahifadagi kornishini grabladik keyin uni ichki korinishini grablap keyin ularni qanday qilib birlashtiramis, shu haqida batafsilroq malumot berolmi
menimcha bitta grablasa boshqa saxifalar ham ishlayveradi
3 daqiqa 32 soniyadan keyin yozdi:
#15 shu parserni yasadim meni bazamga boshqa saytdagi malumotlar kopiya bob tushyapti faqat 30 40 ta malumot kopiya bob uyogiga toxtab qolyapti nima qilsa boladi?
6666
Nuriddin777
#18
Parser haqida biror oddiyroq namuna jo'natib yuboringlar.
RM_FANAT
#19
Nuriddin777, # Nuriddin777 (11.06.2019 / 09:25)
Parser haqida biror oddiyroq namuna jo'natib yuboringlar.
http://uzfifa.net mana shu sayt parserlangan
Mailzero
#20
john uchun yuklama grabi sinab ko`rilarchi:
  1. <?php
  2. define('_IN_JOHNCMS', 1);
  3. $textl='Spaces';
  4. require_once ("../incfiles/core.php");
  5. require_once ("../incfiles/head.php");
  6. header("Content-type:text/html; charset=utf-8");
  7. $file = file_get_contents("http://alitest.ru/loads/spaces/?".$_SERVER['QUERY_STRING']);
  8. echo $file;
  9. require_once (".../incfiles/end.php");
  10. ?>

PS: ishlasa + sizdan

Kunduzi: 22°C

19 Apr 2024 yil
Joylashuv aniqlanmadi