Chciałbym móc zeskrobać liczbę "o N wyników" dla dowolnego wyszukiwanego hasła w wyszukiwarce Google. Google jest dość odporny na skrobaki, więc może to być opcja z odrobiną pracy, ale pytam, czy jest lepszy sposób na zrobienie tego? Być może istnieje już wcześniej udostępniony przez Google interfejs API, który spełniłby tę potrzebę?Czy istnieje programowy sposób zwracania numeru "około N wyników" z wyszukiwarki Google?
Odpowiedz
Nie próbowałbym skrobania, ponieważ najprawdopodobniej wiążą się z tym konsekwencje prawne, ale skorzystał z Google Custom Search API. Będziesz potrzebować klucza API oraz identyfikatora CX (jest to identyfikator niestandardowej wyszukiwarki ustawionej na koncie Google)
Gdy uzyskasz dostęp do interfejsu API i swojego identyfikatora CX, może przesyłać kwerendy do metody cse.list i uzyskać numer, którego szukasz w odpowiedzi pod numerem totalResults
.
Podczas konfigurowania i dostosowywania własnej wyszukiwarki musisz zdefiniować witryny, które chcesz przeszukać. Na szczęście można dodać symbole wieloznaczne, takie jak * .com, * .net itp. Lub wykonaj instrukcje na tej stronie, aby przeszukać całą sieć: https://support.google.com/customsearch/answer/2631040?hl=en
Dołączyłem wszystkie linki potrzebne do poruszania się po to poniżej. Wypróbuj Eksplorator listy interfejsów po uzyskaniu identyfikatora CX. Otrzymasz dane odpowiedzi w czasie rzeczywistym, które możesz sprawdzić i bawić się.
Google Custom Search API
https://developers.google.com/custom-search/
Jest to metoda/końcowy będziemy chcieli użyć:
https://developers.google.com/custom-search/json-api/v1/reference/cse/list
cse.list metoda Explorer:
https://developers.google.com/apis-explorer/#p/customsearch/v1/search.cse.list
Konfigurowanie i zarządzanie niestandardową wyszukiwarkę
https://cse.google.com/cse/manage/all
Uwaga: Wyniki mogą się różnić nieco w zależności jak masz swoją wyszukiwarka skonfigurowany. Mam zestaw testów do przeszukiwania całej sieci z naciskiem na domeny * .com i * .net i otrzymuję większą liczbę niż ta, którą Google pokazuje w "O wynikach N". Nie jestem pewien, czy potrzebujesz tej dokładnej liczby, ale opisują ją jako "Informacje", więc i tak nie może to być dokładny numer. Chodzi o to, że w CSE masz dużą kontrolę nad tym, jak to skonfigurować i powinieneś być w stanie bardzo blisko.
Zakładając, że to Twój niestandardowy interfejs API wyszukiwania, czy próbowałeś warunkowo usunąć właściwość totalResults
z treści odpowiedzi JSON?
można osiągnąć wykonując test na parametr zapytania (powiedzmy q),
if(q.equals("your string")){
var keyName = "totalResults";
var resp = json_encode($response);
delete resp.queries.<APIkey>[keyName];
}
UWAGA: Struktura zlokalizować nazwa_klucza: totalResults został pochodzący z here
This nie podaje rzeczywistej liczby wyników, ale bardzo ograniczony podzbiór. Zobacz tutaj: http://jsfiddle.net/gh/gist/library/pure/6130833/ – DhruvPathak
Jakie domeny skonfigurowałeś w swojej wyszukiwarce za pomocą używanego identyfikatora cx? wygląda na to, że szuka tylko "developers.google.com". Musisz dodać domeny wieloznaczne, jak wspomniałem powyżej, aby rozszerzyć wyszukiwanie. –
To jest przykład google, ale to, co mówię, to wiele domen wieloznacznych, to nadal brakowało dużej części sieci. – DhruvPathak