Rss არ აანალიზებს მთელ სტატიას. ველების დამატება ანალიზისთვის. მადლობა თქვენი სპონსორობისთვის

ხშირად გვიწევს მუშაობა დიდი მოცულობებიმონაცემები, როგორიცაა სიახლეები, პროდუქტები და სხვა მნიშვნელოვანი ინფორმაცია.

ზოგიერთ შემთხვევაში, უმჯობესია ნამუშევრის ნაწილი სკრიპტებს დაუთმოთ, მაგალითად, ამ მონაცემების გაანალიზება და თქვენს ვებსაიტზე წარდგენა.

დღეს ჩვენ დეტალურად განვიხილავთ, თუ როგორ გავაანალიზოთ RSS არხები და, ანალოგიით, XML ფაილები, როგორიცაა ფასების სია და სხვა.

ასე რომ, ვთქვათ, იპოვნეთ საიტი, რომელიც უზრუნველყოფს RSS არხს ამ ფორმატში:

ყველაფერი ვებსაიტების შესაქმნელად: <a href="https://olegshein.ru/ka/error-itunes/skachat-html-shablony-kommunikacii-pluton-besplatnyi-odnostranichnyi-shablon-na-bootstrap-html5/">უფასო შაბლონები</a>, სკრიპტები, ჰაკები და მრავალი სხვა. https://www.pandoge.com ვებმასტერი ხარ და გიყვარს შენი საქმე? ეს არის ბიბლია პრაქტიკოსი ვებ დეველოპერებისთვის. ბლოგის სიახლეები https://www.pandoge.com/novosti_bloga/ საიტის სიახლეები, განცხადებები და მიმოხილვები ერთ განყოფილებაში - ასე რომ თქვენ ყოველთვის იყოთ განახლებული ჩვენს ბლოგზე მოვლენებთან დაკავშირებით. მოდულები და სკრიპტები https://www.pandoge.com/moduli_i_skripty/ გსურთ შექმნათ ფუნქციური და მონახულებული რესურსი ინვესტიციის გარეშე? საავტორო სკრიპტები და მოდულები დაგეხმარებათ თქვენი მიზნის მიღწევაში - ინტეგრირება და შედეგის მიღება.

რას ვხედავთ აქ? ეს არის ინფორმაციის ბლოკი საკვების და ორი მასალის შესახებ, რომელიც შეიცავს ტეგში " ნივთი».

მოდით ახლა ვეცადოთ მივიღოთ ყველა საჭირო მონაცემი.

ვინაიდან ჩვენი მთავარი იდეაა შევქმნათ საკუთარი ახალი ამბების წყარო მიღებული მონაცემების საფუძველზე, პირველ რიგში მივიღებთ ინფორმაციას მიმდინარე არხის შესახებ.

მთელი მაგალითის განმავლობაში ჩვენ გამოვიყენებთ " SimpleXML", რომელიც გეხმარებათ XML ფაილების დამუშავებაში დიდი სირთულის გარეშე.

შემდეგ არხის შესახებ ძირითადი ინფორმაციის მისაღებად კოდი ასე გამოიყურება:

არხი->სათაური; // არხის სახელი $link_channel = $rss->channel->link; // წყაროს ბმული $description_channel = $rss->channel->description; // არხის ეხოს აღწერა $description_channel; // დაბეჭდე აღწერა?>

გთხოვთ გაითვალისწინოთრომ ტეგების სახელი შეიძლება ოდნავ განსხვავებული იყოს - ეს არანაირ როლს არ თამაშობს, თქვენს შემთხვევაში - თქვენ ყველაფერს აკეთებთ ანალოგიით.

ასე რომ, ჩვენ დავახარისხეთ ძირითადი ინფორმაცია, ახლა ყველაზე საინტერესო ნაწილია მასალების გარჩევა.

ძირითადი ინფორმაციისგან განსხვავებით, შეიძლება იყოს რამდენიმე მასალა და იმისათვის, რომ მივიღოთ ისინი, ჩვენ გამოვიყენებთ ციკლს ” foreach».

და თავად მასალების მიღება ჩვენი RSS არხის, როგორც მაგალითის გამოყენებით, ასე გამოიყურება:

channel->item როგორც $items) (echo<<($items->title)

($items->აღწერილობა)

ბმული)">მეტი HTML; ) ?>

გამოსავალზე მიიღებთ მსგავს რაღაცას:

თუ ეს არ მოხდა თქვენთვის, დაწერეთ ამის შესახებ კომენტარებში.

ყველა XML ფაილი გაანალიზებულია ამ პრინციპის გამოყენებით, იცვლება მხოლოდ მათი სტრუქტურა. თუ თქვენი ფაილი შეიცავს პარამეტრებს ტეგებში და არ იცით როგორ მიიღოთ ისინი, გირჩევთ წაიკითხოთ.

პარსერი RSS შინაარსიფირები, მედია კონტენტის საიტზე ჩამოტვირთვის შესაძლებლობით.

არხის ველების დამატებისას, რომლებიც საჭიროებს ანალიზს, ველის სახელის ნაცვლად (სათაური ან დანართი), შეგიძლიათ მიუთითოთ @INLINE ის ნაწილი, რომელიც დამუშავდება ფენომენი. ამის წყალობით, თქვენ შეგიძლიათ ააწყოთ აბსოლუტურად ნებისმიერი ლოგიკა ამ სფეროებში, თუნდაც შექმნათ ახალი სექციები "ფრენაზე".

მეტი დეტალი სამუშაოს შესახებ

ამოცანა იყო კომპონენტთან ურთიერთობის მაქსიმალურად გამარტივება, ამიტომ ვეძებ მოსაზრებებს იმის შესახებ, თუ რამდენად ადვილია კომპონენტის მართვა.

დავალების დამატება

გადადით კომპონენტის გვერდზე, დააწკაპუნეთ დავალების დამატება => დაამატეთ RSS არხი.
ჩანართზე საფუძვლებიშეავსეთ ასე:

ჩანართზე გადართვა კონფიგურაცია, სადაც შეგიძლიათ მიუთითოთ:

  • შაბლონი შექმნილი რესურსებისთვის,
  • კონტექსტი,
  • მშობელი კონტეინერი არჩეულ კონტექსტში,
  • მედია კონტენტის ჩამოტვირთვის კონფიგურაცია,
  • საჭიროების შემთხვევაში, შეცვალეთ არხის საბაზისო ტეგი და პოსტის საბაზისო ტეგი.

მედიის შინაარსის გაფართოებები და საქაღალდეები თითოეული გაფართოების შესანახად მითითებულია JSON-ში.

ველების დამატება ანალიზისთვის

ახლად დამატებულ ამოცანაზე დააწკაპუნეთ დააწკაპუნეთ მარჯვენა ღილაკითდა აირჩიე სამუშაო ველები:

გაიხსნება დავალების ველების სია, რომელიც ჯერ კიდევ ცარიელია.

სამუშაო ველების დამატების გარდა, ჩვენ შეგვიძლია ნახოს ფირის მნიშვნელობების მასივიარის დაბეჭდილი მასივი მონაცემებით პირველი ფირის ჩანაწერიდან:

ჩვენ გვახსოვს იმ ველების სახელები, რომლებიც უნდა გავაანალიზოთ საიტზე და დავაწკაპუნოთ დაამატეთ ველი. გაიხსნება ფანჯარა, რომელშიც მითითებულია:

  1. სისტემის ველი. სისტემის რესურსების ველებისა და სატელევიზიო ველების ჩამოსაშლელი სია.
  2. ველი წყაროში. ტექსტური ველი, რომელშიც უნდა შეიყვანოთ ტეგის სახელი RSS არხში.
    თქვენ შეგიძლიათ მიუთითოთ @INLINE ის ნაწილი, რომელიც დამუშავდება ფენომენისაწყისი pdoTools. ბლოკი შეიცავს ყველა შესაძლო ველის ჩანაცვლების ველებს RSS არხიდან, რომლებიც წარმოდგენილია ტეგებს შორის ჩანაწერში. ნივთი, ისევე როგორც მასივი სამუშაოს პარამეტრებით $_ამოცანა.
    ამ სფეროში განხორციელების გამო ფენომენი, ეს შესაძლებელი იქნება ტეგიდან მნიშვნელობის მიღებით კატეგორია(როგორც მაგალითად RSS Lenta.ru-ში) გააკეთეთ არჩევანი რესურსების ბაზიდან, მოძებნეთ მსგავსი კატეგორიის პირადობის მოწმობები ჩვენს ვებსაიტზე და თუ ვერ მოიძებნა, დაამატეთ.
    მონიშნეთ დანართიდა მსგავსი, მითითებულია ან ნაწილის მეშვეობით: „@INLINE ($enclosure["url"])“, ან ფორმით CSS სელექტორები: "დანართი".
    თუ არ არის მითითებული ან მნიშვნელობა ამ სფეროსცარიელია არხში, შემდეგ, როგორც მნიშვნელობა სისტემის ველიმიიღება მნიშვნელობა შემდეგი ველიდან - ნაგულისხმევი მნიშვნელობა.
  3. ნაგულისხმევი მნიშვნელობა. ამ ველში შეგიძლიათ მიუთითოთ მნიშვნელობა, რომელზეც ჩაიწერება სისტემის ველი. მაგალითად, თუ ჩვენ ვართ სისტემის ველიაირჩია კლასი_გასაღები, მაშინ ბილეთების შესაქმნელად, ჩვენ ვართ სფეროში ნაგულისხმევი მნიშვნელობაჩვენ ვწერთ "ბილეთი" და ველი წყაროშიდატოვე ცარიელი.
    იგივე "ჯადოსნობა" შეიძლება გაკეთდეს მინდორთან ერთად გამოქვეყნდა, ნაგულისხმევი მნიშვნელობის მითითებით, როგორც "1". შემდეგ რესურსი დაემატება საიტზე დაუყოვნებლივ გამოქვეყნებულ.

ძირითადი ველების გარდა მონაცემებით, რომლებიც უნდა აიტვირთოს საიტზე, ჩვენ ასევე უნდა დავამატოთ ველი, რომლითაც პაკეტი მიხვდება, რომ ეს ჩანაწერიუკვე საიტზეა. ამისთვის დაამატეთ ახალი ველი, მნიშვნელობა სისტემის ველიდატოვე ცარიელი და ველი წყაროშიჩვენ ვწერთ, მაგალითად, „გიდს“ (რადგან ის ყველაზე ნაკლებად ექვემდებარება ცვლილებებს). ეს უნდა იყოს დაახლოებით ასეთი:

შენახვა. ველების სიაში მოათავსეთ მაჩვენებელი ამ ველზე უნიკალური სფერო(ვარსკვლავის ღილაკი მარცხნივ):

ყველაფერი მზად არის ანალიზებისთვის, როგორც ერთჯერადი, ასევე წუთ-წუთში (კომპონენტს აქვს სკრიპტი კრონიდან სამუშაოების გასაშვებად).

მადლობა თქვენი სპონსორობისთვის!

P.S. ვლადიმირმა როგორღაც მოახერხა WordPress-დან MODX-ში იმპორტის დაწყება ამ კომპონენტით. იმედი მაქვს, ის გვეტყვის, როგორ გავაკეთოთ ეს.

ახლა კი განვითარების შესახებ

  1. 1990 რუბლი არ არის კომპონენტის საბოლოო ღირებულება, როგორც ის ვითარდება, ღირებულება მხოლოდ გაიზრდება. მზადაა!
  2. კომპონენტი გაფართოვდება HTML შინაარსის პარსერზე. მზადაა!
  3. არსებობს პარსერის ტიპების (RSS არხები და HTML შინაარსი) გაერთიანების იდეა. მაგალითად, RSS არხებში ყოველთვის არის ბმული სრული სტატია. გეგმა მდგომარეობს იმაში, რომ დარწმუნდეთ, რომ ამ ველის ბმულით გამოყენებით, შეგიძლიათ გაგზავნოთ ანალიზის დავალება RSS არხებიმეზობელ ამოცანას, რომელიც კონფიგურირებულია სპეციალურად ამ HTML შინაარსისთვის. ბუნებრივია, ეს იდეა განხორციელდება მხოლოდ მას შემდეგ, რაც განხორციელდება თავად „HTML content“ დავალების ტიპი. მზადაა!
  4. დაინერგება ms2Gallery, UserFiles2, modClassVar მხარდაჭერა. კიდევ რა?
  5. თუ არსებობს საინტერესო იდეებიკომპონენტის განვითარება - ისაუბრეთ.

როგორც ამბობენ: "xml არის ის, რაც ყველას ძალიან ახარებს..."- მაგრამ ეს არ აადვილებს საქმეს. არსებობს ასეთი სტანდარტი XML დოკუმენტები RSS-ის მსგავსად. ეს სტატია ეძღვნება იმას, თუ როგორ შეგიძლიათ გააანალიზოთ RSS არხები PHP-ის გამოყენებით.

განსახილველი XML პარსერი არის SimpleXML. მიუხედავად იმისა, რომ ეს ძალიან მარტივია, ღირს ამის გახსენება ეს გაფართოებაწარმოდგენილია მხოლოდ PHP 5-ში, თუმცა არის უფრო მეტი ბიბლიოთეკები ადრინდელი ვერსიები, მაგრამ თავად იზრუნე ამაზე. და მრავალი RSS არხის ვალიდობა სასურველს ტოვებს. რჩება მხოლოდ "ყავარჯნები" გამოვიყენოთ და გამოვიყენოთ ის, რაც გვაქვს.

ასეა თუ ისე, ჩვენი ამოცანაა ჩატვირთოთ RSS არხის მონაცემები PHP-ის გამოყენებით და გამოვაჩინოთ ეკრანზე იმ ფორმით, რომელიც ჩვენ გვჭირდება. ცალკე მინდა აღვნიშნო, რომ როგორც კი გაიგებთ საკითხის არსს, შეგიძლიათ მარტივად გამოიყენოთ მიღებული ცოდნა XML გამოსახულების ანალიზთან დაკავშირებულ სხვადასხვა სფეროში.

მაშ ასე, დავიწყოთ ცვლადის შემოღებით, რომლის მნიშვნელობა იქნება ჩვენთვის საინტერესო RSS feed. მაგალითად:

$rss = "http://k.img.com.ua/rss/ru/news.xml";

ახლა ჩვენ უნდა ჩატვირთოთ და გავაანალიზოთ ეს მონაცემები. აქ მე მოგცემთ ორ გზას. პირველი საშუალებას გაძლევთ წაიკითხოთ RSS არხი ჩვეულებრივი გზით და გამოიყენოთ SimpleXML, როგორც მონაცემთა სტრიქონების პარსერი. მაგალითად:

$xmlstr = @file_get_contents ($rss);
if($xmlstr===false)die("RSS-თან დაკავშირების შეცდომა: ".$rss);
$xml = ახალი SimpleXMLElement ($xmlstr);

როგორც ხედავთ ჩვენ:
- ჩამოტვირთეთ ჩვენი RSS არხი სტრიქონში, რომელიც გახდა $xmlstr ცვლადის მნიშვნელობა;
- შეამოწმა თუ არა შესაძლებელი RSS არხის ჩატვირთვა;
- გააანალიზა RSS არხის მონაცემები და მიენიჭა შედეგი $xml ცვლადს;
- შეამოწმა, იყო თუ არა შესაძლებელი RSS არხის მონაცემების გაანალიზება.

მთელი ეს პროცედურა შეიძლება გამარტივდეს შემდეგნაირად:

$xml = @simplexml_load_file($rss);
if($xml===false)die("Error parse RSS: ".$rss);

ორი მაგალითის შედარებით, თქვენ შეგიძლიათ მარტივად იპოვოთ განსხვავებები და გაიგოთ არსი. ასე რომ არ გავჩერდეთ და გავაგრძელოთ. ახლა ჩვენ გვაქვს RSS არხის მონაცემები ადვილად დასამუშავებელ ფორმატში. აქ გვაქვს ობიექტზე ორიენტირებული მიდგომა და მონაცემთა მასივები. უფრო გასაგებად, აქ მოცემულია RSS არხის მონაცემების გამოტანის მაგალითი:

Foreach($xml->xpath("//item") როგორც $item)(
echo "".$item->title."(".$item->pubDate.")";
ექო"
".$item->description."
";
}

როგორც ხედავთ, აქ მე გამოვიყენე Xpath მოთხოვნა RSS არხის ჩანაწერების მასივის შესარჩევად. გაითვალისწინეთ, რომ მნიშვნელობა არის ნივთის „შვილი“, რომლის მამაც არხია (იხ. RSS ფორმატის აღწერა). ამიტომ წინ გვაქვს ორი დახრილობა. უფრო გასაგებად რომ ვთქვათ, მე მოვიყვან მაგალითს Xpath-ის გამოყენების გარეშე:

Foreach($xml->channel->item as $item) (

აღსანიშნავია ისიც, რომ ვიღებთ $item ობიექტს, რომლის პარამეტრები ნაჩვენებია ეკრანზე.

როგორც ჩანს, ეს ყველაფერია. როგორც ხედავთ, SimpleXML მართლაც მარტივია.

ტეგები: RSS, SimpleXML

ეს სტატია კომენტარს არ ექვემდებარება, რადგან მისი ავტორი ჯერ არ არის

Sandbox

გემის მეთაური 2011 წლის 25 იანვარი, 21:03

  • კარადა *

როგორც ამბობენ: "xml არის ის, რაც ყველას ძალიან ახარებს..."- მაგრამ ეს არ აადვილებს საქმეს. არსებობს ისეთი სტანდარტი XML დოკუმენტებისთვის, როგორიცაა RSS. ეს სტატია ეძღვნება იმას, თუ როგორ შეგიძლიათ გააანალიზოთ RSS არხები PHP-ის გამოყენებით.

განსახილველი XML პარსერი არის SimpleXML. იმისდა მიუხედავად, რომ ეს ძალიან მარტივია, უნდა გვახსოვდეს, რომ ეს გაფართოება მხოლოდ PHP 5-შია წარმოდგენილი, თუმცა არის ბიბლიოთეკები ადრინდელი ვერსიებისთვის, მაგრამ თავად იზრუნეთ ამაზე. და მრავალი RSS არხის ვალიდობა სასურველს ტოვებს. რჩება მხოლოდ "ყავარჯნები" გამოვიყენოთ და გამოვიყენოთ ის, რაც გვაქვს.

ასეა თუ ისე, ჩვენი ამოცანაა ჩატვირთოთ RSS არხის მონაცემები PHP-ის გამოყენებით და გამოვაჩინოთ ეკრანზე იმ ფორმით, რომელიც ჩვენ გვჭირდება. ცალკე მინდა აღვნიშნო, რომ როგორც კი გაიგებთ საკითხის არსს, შეგიძლიათ მარტივად გამოიყენოთ მიღებული ცოდნა XML გამოსახულების ანალიზთან დაკავშირებულ სხვადასხვა სფეროში.

მაშ ასე, დავიწყოთ ცვლადის შემოღებით, რომლის მნიშვნელობა იქნება ჩვენთვის საინტერესო RSS feed. მაგალითად:

$rss = "http://k.img.com.ua/rss/ru/news.xml";

ახლა ჩვენ უნდა ჩატვირთოთ და გავაანალიზოთ ეს მონაცემები. აქ მე მოგცემთ ორ გზას. პირველი საშუალებას გაძლევთ წაიკითხოთ RSS არხი ჩვეულებრივი გზით და გამოიყენოთ SimpleXML, როგორც მონაცემთა სტრიქონების პარსერი. მაგალითად:

$xmlstr = @file_get_contents ($rss);
if($xmlstr===false)die("RSS-თან დაკავშირების შეცდომა: ".$rss);
$xml = ახალი SimpleXMLElement ($xmlstr);

როგორც ხედავთ ჩვენ:
- ჩამოტვირთეთ ჩვენი RSS არხი სტრიქონში, რომელიც გახდა $xmlstr ცვლადის მნიშვნელობა;
- შეამოწმა თუ არა შესაძლებელი RSS არხის ჩატვირთვა;
- გააანალიზა RSS არხის მონაცემები და მიენიჭა შედეგი $xml ცვლადს;
- შეამოწმა, იყო თუ არა შესაძლებელი RSS არხის მონაცემების გაანალიზება.

მთელი ეს პროცედურა შეიძლება გამარტივდეს შემდეგნაირად:

$xml = @simplexml_load_file($rss);
if($xml===false)die("Error parse RSS: ".$rss);

ორი მაგალითის შედარებით, თქვენ შეგიძლიათ მარტივად იპოვოთ განსხვავებები და გაიგოთ არსი. ასე რომ არ გავჩერდეთ და გავაგრძელოთ. ახლა ჩვენ გვაქვს RSS არხის მონაცემები ადვილად დასამუშავებელ ფორმატში. აქ გვაქვს ობიექტზე ორიენტირებული მიდგომა და მონაცემთა მასივები. უფრო გასაგებად, აქ მოცემულია RSS არხის მონაცემების გამოტანის მაგალითი:

Foreach($xml->xpath("//item") როგორც $item)(
echo "".$item->title."(".$item->pubDate.")";
ექო"
".$item->description."
";
}

როგორც ხედავთ, აქ მე გამოვიყენე Xpath მოთხოვნა RSS არხის ჩანაწერების მასივის შესარჩევად. გაითვალისწინეთ, რომ მნიშვნელობა არის ნივთის „შვილი“, რომლის მამაც არხია (იხ. RSS ფორმატის აღწერა). ამიტომ წინ გვაქვს ორი დახრილობა. უფრო გასაგებად რომ ვთქვათ, მე მოვიყვან მაგალითს Xpath-ის გამოყენების გარეშე:

Foreach($xml->channel->item as $item) (

აღსანიშნავია ისიც, რომ ვიღებთ $item ობიექტს, რომლის პარამეტრები ნაჩვენებია ეკრანზე.

როგორც ჩანს, ეს ყველაფერია. როგორც ხედავთ, SimpleXML მართლაც მარტივია.

ტეგები: RSS, SimpleXML

ეს სტატია კომენტარს არ ექვემდებარება, რადგან მისი ავტორი ჯერ არ არის



რაიმე შეკითხვა?

შეატყობინეთ შეცდომას

ტექსტი, რომელიც გაეგზავნება ჩვენს რედაქტორებს: