B. Skrypty pobierające adresy URL z wyników wyszukiwania Google

Działanie skryptów przedstawionych na wydrukach B.1 i B.2 zostało opisane w punkcie 6.1. Ich kod jest na tyle prosty, że nie ma sensu go omawiać. Warto jednak zwrócić uwagę na parametry wywołania polecenia wget. Google odmawia przekazania wyników klientowi HTTP, który identyfikuje się jako wget -- prawdopodobnie aby utrudnić automatyczne pobieranie wyników wyszukiwania. Dzięki zastosowaniu parametru -U "Mozilla/5.001" polecenie wget pobierając z serwisu Google wyniki wyszukiwania przedstawia się jako przeglądarka internetowa Mozilla (pole user-agent w nagłówku zapytania HTTP).

Skrypt prepare_links pobiera adresy URL z wyników wyszukiwania zapisanych w formacie, jaki był przekazywany przez serwis Google w momencie tworzenia tego skryptu. Oczywiście nie ma żadnej gwarancji, że w przyszłości format ten nie ulegnie zmianie.

Wydruk B.1: Skrypt prepare_links
#!/bin/bash

if [ -z "$2" ]
then
  echo Usage:
  echo "  $ prepare_links  "
  echo " example"
  echo "  $ prepare_links \"miami aligator\" 5"
  exit
fi

last=$(($2 - 1))
phrase=`echo $1 | sed "s/ /+/g"`

for start in $( seq 0 $last) ; do
  wget -q -U "Mozilla/5.001" -O - \
  "http://www.google.com/search?q=$phrase&num=100&start=${start}00" | \
  grep "^<p><a href=" | \
  sed "s/<p><a href=\([^>]*\).*/\1/"
done

Wydruk B.2: Skrypt links2db
#!/bin/bash

sed "s/\(.*\)/insert into strona (url) values (\"\1\")/";

Przedstawione na wydruku B.3 polecenie pokazuje sposób wykorzystania tych skryptów. Pobiera ono 10 tys. adresów URL z wyników wyszukiwania słowa ala i zapisujące je w pliku links.sql w postaci poleceń języka SQL.

Wydruk B.3: Sposób wykorzystania skryptów prepare_links i links2db

$ prepare_links ala 100 | links2db > links.sql

Sebastian Łopieński