Jump to content
php.lv forumi

Crawl vai Scrape - kā pareizi? - mēģinos, nesanāk


kapeika

Recommended Posts

It kā viss kārtībā, jaunumu lapā ieiet, bet visdrīzāk, ka esmu nepareizi noformējis šo rindiņu, kurā viņš ņem jaunumu contentu (bold un underline kodā) - 

 

public function getSingleFromFirstShowing($url)
{
$item = $this->curl($url);


$crawler = new Crawler($item);


$html = $crawler->filter('.newsPage')->each(function (Crawler $node, $i)
{
   $ht = trim($node->html());


   //filter out unneeded html


    
   return '<p>' . preg_replace('/<a.*?>(.*?)<\/a>/', '$1', $ht) . '</p>';     
});


return trim(implode('', $html));
}

Jaunumu teksts netiek iegūts. It kā skatījos šeit - 

 

http://www.kinopoisk.ru/news/2494989/

 

Un selektoram vajadzētu būt .newsPage.

 

Vai tur ir kļūda? Ja jā, tad pēc šī izlabošanas visam vajadzētu būt čikiniekā, tiesa, bildi viņš ņem maziņu (jo kinopoiskā thumbnaili ir ļoti mazi, bet manā lapā viņš automātiski mēģina izplest pēc responsivitātes, bet tur laikam neko īpaši izdarīt nevar.)

Link to comment
Share on other sites

Sanāk tas pats.

 

Re kā man tagad izskatās tas newsscraper fails - http://pastebin.com/gTWfVWXy - varbūt esmu pieļāvis kļūdu, kaut gan visam it kā vajadzētu būt kārtībā.

 

Kad caur adminpaneli apdeitoju ziņas, tās pievienojas, un no adminpaneļa redzams arī jaunumu excerpts. Pēc tam, kad ieeju lapā un viņš mēģina no jauna nofetchot datus (arī pilno rakstu), tad lapa paliek tukša un adminpanelī excerpts arī ir nozudis.

 

Vari pārbaudīt pats, ieejot lapā un nospiežot uz otrā vai trešā jaunuma (tos neaiztiku).

 

Var pajautāt, ar ko un tieši kā tu uzzini par saturu? Kaut kāda metode? Es caur inspect element skatījos, neko dižu nesaskatīju, bet likās, ka ir pareizi ar newsPage.

Link to comment
Share on other sites

 

This paste has been removed!

 

 

Kad caur adminpaneli apdeitoju ziņas, tās pievienojas, un no adminpaneļa redzams arī jaunumu excerpts. Pēc tam, kad ieeju lapā un viņš mēģina no jauna nofetchot datus (arī pilno rakstu), tad lapa paliek tukša un adminpanelī excerpts arī ir nozudis.

Kaut kas tur kodā nav tīrs.

 

 

Vari pārbaudīt pats, ieejot lapā un nospiežot uz otrā vai trešā jaunuma (tos neaiztiku).

Iedod konkrētu linku. Atveru galveno lapu un eju cauri filmām, visas attēlojas normāli.

 

 

ar ko un tieši kā tu uzzini par saturu?

Tikai Inspect element, neko citu jau nevajag.

Link to comment
Share on other sites

Piemirsu verifikāciju aizpildīt - 

 

http://pastebin.com/4BBWf1Em

 

Lūk kods.

 

Ar filmām viss ir kārtībā jau no paša sākuma, tās fetcho krievu valodā no tmdb. Bet pēc defaulta jaunumus ņem no firstshowing vai screenrant, bet, tā kā es šo mājaslapu vēlos tendēt krieviski runājošai publikai, vēlos fetchot datus no kinopoisk.

Link to comment
Share on other sites

Uhhhh... tajā kodā nav kinopoisk metožu... getFromFirstShowing() skreipo kinopoisk, wtf?

Cik es redzu pēc tava /news/ saraksta, tad šī koda līnija neatgriež īso aprakstu: 'body'     => head($cr->filter('.descr')->extract(array('_text'))),

vai arī tu to nemaz neizvadi.

 

 

Ja tur viss ir kārtībā, tas skaties, kas notiek getSingle... metodē, skaties, vai $ht = trim($node->html()); satur to, ko vajag, un vēl - pieliec /iu modifierus tam preg_replace.

Link to comment
Share on other sites

Jā, es Kinopoisk metodi iebāzu zem FirstShowinga, jo baidījos, ka vēl citos failos varētu būt kaut kādi izpildošie skripti. Lai tos nemeklētu, es izvēlējos zem FirstShowing nosaukuma iestūķēt Kinopoisku. Nezinu, vai daru pareizi (noteikti, ka labāk pievienot atsevišķi), bet man tas likās uz doto brīdi drošāk.

 

Īsais apraksts tiek izvadīts un fetchots tas tiek pareizi - http://okz.tv/news (apskaties ziņas zemāk). Tiklīdz tu uzspied uz kādas ziņas, kurai ir īsais apraksts (excerpt), tas pazūd, it kā single post scraping skripts to nepareizi atkal nofetcho un neko nepievieno.

 

Kā jau teicu, funkcija ir tāda - 

 

1. Ir Adminpanelis, kurā nospiežot pogu "update", tiek nofetchoti jaunumi ar šiem datiem - 

			'title'    => head($cr->filter('.title > a')->extract(array('_text'))),
			'image'	   => head($cr->filter('.pic > a > img')->extract(array('src'))),
			'body'     => head($cr->filter('.descr')->extract(array('_text'))),
			'full_url' => 'http://kinopoisk.ru' . head($cr->filter('.more > ...###

Šie dati un jaunumi nofetchojas lieliski, ar visu description un pārējo.

2. Mājaslapa ir uzbūvēta tā, ka tā ielādē datus, tiklīdz kāds nospiež uz jaunuma vai filmas (vai arī meklē filmu vai aktieri). Tiklīdz lietotājs nosūta pieprasījumu, lapa ielādē saturu datubāzē.

3. Attiecīgi, tiklīdz es uzspiežu uz jau nofetchotā jaunuma, skripts visdrīzāk pēc single koda mēģina ielādēt pilnu jaunumu, kā arī no jauna īso aprakstu, bet notiek kļūda, un pilnajā rakstā tiek attēlots tikai raksta nosaukums un bilde.

 

Apskatīšos, kas notiek ar getSingle, pēc tam atrakstīšos, ceru, ka par double post man pirkstus necirtīs nost :)

 

Paldies par palīdzību, Juri (pieļauju, ka tevi tā sauc)!

Link to comment
Share on other sites

Nu tad problēma ir tajā, ka, atverot pilnā apraksta lapu, īsais apraksts tiek izdzēsts/aizvietots ar pilno aprakstu. Tā vispār nevajadzētu būt, īsais apraksts != pilnais apraksts.

Pilnā apraksta lapā vajadzētu iefečot pilno aprakstu un lielo bildi, un varbūt vēl video, bet neko vairāk.

 

You're welcome :)

Link to comment
Share on other sites

  • 3 weeks later...

Ne šā, ne tā, bet pilnu ziņu iegūt man neizdevās, kam ir gan plusi, gan mīnusi -

 

1. Mīnuss - pilnu rakstu nevarēs lasīt lapā.

2. Pluss - nebūs duplicate contents un google nedusmosies.

 

Jautājums - vai var tā, ka, nospiežot uz noskreipotā raksta nosaukuma, bildes vai cita elementa (no galvenās lapas - http://okz.tv - labās malas vai no jaunumu saraksta lapa, lietotājs tiek pārsūtīts uz pilno rakstu tā oriģinālās izcelsmes lapā?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...