Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][cURL] Pobranie źródła strony
trollman
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.12.2012

Ostrzeżenie: (0%)
-----


Witam.
Mam problem gdyż chciałbym pobrać źródło strony i z niego wyciągnąć odpowiedni fragment kodu javascript.
Napisałem taką funkcję

  1.  
  2. <?php
  3. $cookie_file ="cookie.txt";
  4. //$url ='http://adresstrony.pl';
  5. $ch=curl_init($url);
  6. curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
  7. curl_setopt($ch,CURLOPT_TIMEOUT,50);
  8. curl_setopt($ch,CURLOPT_HEADER,0);
  9. curl_setopt($ch,CURLOPT_REFERER,$url);
  10. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0');
  11. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
  12. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
  13. $soursas=curl_exec($ch);
  14. curl_close($ch);
  15.  
  16. $pattern = '/<script(.*)<\/script>/';
  17. preg_match_all($pattern, $soursas, $matches);
  18. echo '<pre>'; print_r($matches); echo '</pre>';
  19.  
  20. ?>


I nie wiem co robie źle ale ten pattern nie wyciąga ma całego kodu skryptu (ze strony )tylko jego deklaracja takie jak:
[4] => type="text/javascript" src="/js/swfobject.js">
[5] => type="text/javascript" src="/js/colorpicker.js">
[6] => type='text/javascript' src='/js/jquery.cookie.js'>
[7] => type='text/javascript' src='/js/json2.js'>

Jak wcyiągnąć cały kod javacript ze źródła strony?
Go to the top of the page
+Quote Post
kreatiff
post
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

Ostrzeżenie: (0%)
-----


<script.*?>(.*?)</script> - to złapie wszystko pomiędzy znacznikami <script ...>dowolny kod</script>, ale by dopasowało skrypt wieloliniowy, trzeba zmodyfikować zachowanie silnika, by "." traktował też jako znak nowej linii. Czyli musimy dodać jeszcze modyfikator "s". Dodałbym też "u" na wypadek, gdyby w kodzie skryptu trafiły się znaki w kodowaniu UTF-8.

Możliwe, że DOMDocument będzie tutaj lepszym rozwiązaniem zamiast wyrażeń regularnych.

Acha, tak teraz sobie pomyślałem, że jak chcesz wyciągnąć kod z plików js. to trzeba wyłapać ich nazwy z kodu, który otrzumujesz i pobrać osobno.

Ten post edytował kreatiff 26.03.2014, 11:46:13
Go to the top of the page
+Quote Post
trollman
post
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.12.2012

Ostrzeżenie: (0%)
-----


To może inaczej, mam taki kod w pobranym źrdóle

  1. <script type="text/javascript">
  2. var somdfunction = function() {
  3. var a = 783538;
  4. document.getElementById('dlbutton').omg = 783541%78956;
  5. var b = parseInt(document.getElementById('dlbutton').omg) * (783541%3);
  6. var e = function() {if (false) {return a+b+c} else {return (a+3)%b + 3}};
  7. document.getElementById('dlbutton').href = "/d/34751941/"+(b+18)+"/Electro%20House%20Drop%202k14%20by%20Tobii.mp3";
  8. if (document.getElementById('fimage')) {
  9. document.getElementById('fimage').href = "/i/34751941/"+(b+18)+"/Electro%20House%20Drop%202k14%20by%20Tobii.mp3";
  10. }
  11. var result = 0;
  12. }
  13. </script>


I jak z niego wydobyć wartość: 783541%78956
Bo wyrażeniami regularnymi go nie wychwytuje.
Go to the top of the page
+Quote Post
IProSoft
post
Post #4





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

Ostrzeżenie: (0%)
-----


Nie sprawdzone ale zarys masz:
  1. preg_match( '@omg = ([0-9\%]*);@iu', $zmienna_z_tekstem , $matches );
  2.  
  3. var_dump($matches );exit;
Go to the top of the page
+Quote Post
trollman
post
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.12.2012

Ostrzeżenie: (0%)
-----


faktycznie wyciąga tą wartość, a mógłbyś napisać co robi dokładnie to wyrażenie, bo pierwszy raz widze je tak zawiłe
Go to the top of the page
+Quote Post
kreatiff
post
Post #6





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

Ostrzeżenie: (0%)
-----


Tak po mojemu, bo nie znam fachowrgo polskiego nazewnictwa.

'omg = ' - szukaj takiego ciągu znaków
( - rozpocznij łapanie
[0-9\%] - ale tylko wówczas, gdy kolejne znaki to są cyfry lub znak procenta
) - zakończ łapanie
* łap zachłannie (do oporu) wyszczególnione powyżej znaki
; - czyli aż napotkasz średnik

Zawartość "zwróć" do $matches.

Ale to jest proste wyrażenie, może te małpki @ Cię mylą? Ja stosuję hasze #, ale większość chyba jednak slashe /.
Nie robi to żadnej różnicy.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 19:52