Skocz do zawartości

wyrażenia regularne (preg_match_all) + curl


sh0tek

Rekomendowane odpowiedzi

Witam.

Miele od wczoraj temat który wygląda tak:

  • curl pobiera stronę (a co mi tam, wyniki wyszukiwania g)
  • preg_match_all miało by wyciąć listę stron dla konkretnej frazy

No niby prosta sprawa, curl pobiera, preg_match_all ma 'wyciągnąć' to czego szukam

<h3 class="r">


<a href="/url?q=https://www.xxxxxxxxxxxxxxxxxxxxxxxxx.pl/Kremy_do_twarzy&sa=U&ei=h5IcUab1FNOS0QW1-IHQCQ&ved=0CB0QFjAA&usg=AFQjCNGcXZu-7XWtjCyPvwCNAdt8bR2paQ">


<b>xxx</b>
xxxxx
</a>
</h3>

możecie mi pomóc ze stworzeniem wyrażenia regularnego które wyciągnie mi taki link ? właściwie to potrzebował bym domenę

kombinowałem na zasadzie ?q=(.*) i to cudo w teorii wyciąga mi linki, ale duuużo linków, zadużo, jak to ograniczyć żeby wybierał tylko te które mają <h3 class='r'... itd, niby sobie tam kombinowałem ale pozostaje kwestia nowych linii i znaków których chyba nie uwzględniam, lub robie to źle bo nie chce mi to działać.

Przekopałem już internet, znalazłem strony typu regexp.pl ... i dużo pomocy.

Jednak wciąż za mało. Jest jakaś opcja na małą koleżeńską pomoc ?

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Podaj stronę źródłowa i co ma wyciągać to postaram się napisać ;)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Przykładowo - bo cos co robie będzie mi sprawdzało dowolne słowa, strona którą pobieram curlem

np

https://www.google.pl/search?q=krem&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:pl:official&client=firefox-a

chce wszystkie linki wyników ( w zasadzie tylko domeny )

bez youtube, bez adwordsów

będę wdzięczny za jakąkolwiek pomoc

Odnośnik do komentarza
Udostępnij na innych stronach

Czemu https ?

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Kolejny prezent walentynkowy od Mion'a :prezent:

<?php
// getserp.php
function setpozycja($domena_szukana, $keywords)
{
$url = 'https://www.google.pl/search?q='.urlencode($keywords).'&hl=pl&num=100';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,false);
curl_setopt($ch,CURLOPT_MAXREDIRS,0);
curl_setopt($ch, CURLOPT_REFERER, 'https://www.google.pl');
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/'.date("Ymdhis").' Firefox/1.5.0.3');
$headers = array('Accept-Language: pl,en-us;q=0.7,en;q=0.3','Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$dane = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpCode == 200)
{
preg_match_all('@<h3\s*class="r">\s*<a[^<>]*href="([^<>]*)"[^<>]*>(.*)</a>\s*<\/h3>@siU', $dane , $wyszukane);
$arrTemp = array();
foreach($wyszukane[1] AS $pozycje)
{
preg_match('@url\?q=(.*)&amp@iU',$pozycje, $xxwyszukane);
$arrTp = @parse_url($xxwyszukane[1]);
if(isset($arrTp['host']))
{
$arrTemp[] = str_replace('www.','',$arrTp['host']);
}
}
$dzis_niewsto = true;
$pozycja = 1;
$sqlData = array();
$sqlData2 = array();
foreach(array_unique($arrTemp, SORT_STRING) AS $domena)
{
if(preg_match('@^'.$domena_szukana.'$@', $domena))
{
echo $pozycja.' -> '.$domena. ' -> '.$keywords.'<br />';
}
$pozycja++;
}
}
else
{
echo 'Blad HTTP: '.$httpCode.'';
}
}
setpozycja('forum.optymalizacja.com', 'Pozycjonowanie');

Jest to cześć większego kodu, ale to co tu wkleiłem służy do pobierania pozycji. Wystarczy dodać proxy i zapisywanie danych w bazie i całość do monitoringu prawie gotowe ....

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Taka ciekawostka - dla nowego user agenta 'Mozilla/5.0 (Windows NT 5.1; rv:18.0) Gecko/20100101 Firefox/18.0'

Kod przestaje działać, bo google zawraca inny kod HTML z SERP co wymaga malej modyfikacji, ale to już na własna komendę ;)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

to w ramach tematu ja ide po bandzie

$useragents = array(
                   '1' => 'Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1',
                   '2' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0) Gecko/20100101 Firefox/7.0',
                   '3' => 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)',
                   '4' => 'Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB7.0; EasyBits GO v1.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)',
                   '5' => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1',
                   '6' => 'Opera/9.80 (S60; SymbOS; Opera Mobi/275; U; en) Presto/2.4.13 Version/10.00',
                   '7' => 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; .NET CLR 1.0.3705)',
                   '8' => 'Mozilla/5.0 (compatible; Googlebot/2.1; https://www.google.com/bot.html)',
                   '9' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.5) Gecko/20060731 Firefox/1.5.0.5 Flock/0.7.4.1',
                   '10' => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20061205 Iceweasel/2.0.0.1 (Debian-2.0.0.1+dfsg-2)',
                   '11' => 'Mozilla/5.0 (X11; U; Linux 2.4.2-2 i586; en-US; m18) Gecko/20010131 Netscape6/6.01',
                   '12' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT; MS Search 4.0 Robot)',
                   '13' => 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)',
                   '14' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)',
                   '15' => 'Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00',
                   '16' => 'Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.13) Gecko/20101209 Fedora/3.6.13-1.fc14 Firefox/3.6.13',
                   '17' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
                   '18' => 'Mozilla/5.0 (compatible; Konqueror/3.3; Linux) (KHTML, like Gecko)',
                   '19' => 'Mozilla/5.0 (X11; U; Linux ppc64; en-US; rv:1.9.1.16) Gecko/20100427 Galeon/2.0.7 (Debian 2.0.7-2.1+b1)',
                   '20' => 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8',
                   '21' => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.15) Gecko/20101101 Fedora/2.0.10-1.fc14 SeaMonkey/2.0.10',
                   '22' => 'Mozilla/4.0 (Windows; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)',
                   '23' => 'Mozilla/5.0 (X11; U; Linux ppc64; pl-PL; rv:1.9.1.16) Gecko/20110323 Iceweasel/3.5.16 (like Firefox/3.5.16)',
                   '24' => 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)',
                   '25' => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.811.0 Safari/535.1',
                   '26' => 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.1 (KHTML, like Gecko) Maxthon/3.0.8.2 Safari/533.1',
                   '27' => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Ubuntu/11.04 Chromium/15.0.871.0 Chrome/15.0.871.0 Safari/535.2',
                   '28' => 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Avant Browser; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)',
                   '29' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.21pre) Gecko K-Meleon/1.7.0',
                   '30' => 'Mozilla/5.0 (compatible; Konqueror/4.5; FreeBSD) KHTML/4.5.4 (like Gecko)'
               );

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności