Как узнать, что я могу делать с / proc и / sys [closed]

Вот улучшенная версия вашего скрипта.

Он по-прежнему довольно дрянный, потому что (помимо минимальных усилий с первоначальным поиском в Google) он не пытается справиться с какими-либо действительно ужасными вещами, которые, к сожалению, большой процент веб-сайтов делает с A HREF URL-адреса - либо потому, что они некомпетентны, либо потому, что они пытаются отслеживать вас или и то, и другое.

#! /bin/sh

# exit on any error
set -e    

dbfile="results.db"

# if "$dbfile" doesn't exist (or is empty), or if a URL has been
# provided as a command-line argument, fetch the initial URLs
# from "$1" (or a google search), and strip off the google-junk:

if [ ! -s "$dbfile" ] || [ -n "$1" ] ; then 
    URL="{$1:-https://www.google.com/search?q=interesting+stuff}"

    lynx -accept_all_cookies -dump -listonly -nonumbers "$URL" | 
        sed -e '/^http.*url?/!d; s/^.*\/url?q=//; s/\&.*//' > "$dbfile"

fi

URL=$(shuf -n 1 "$dbfile")

while [ 1 ]; do
  lynx -accept_all_cookies -dump -listonly -nonumbers "$URL" | 
      grep http >> "$dbfile"

  tmpfile=$(mktemp) && 
    sort -u "$dbfile" > "$tmpfile" &&
    mv -f "$tmpfile" "$dbfile" &&
    rm -f "$tmpfile"

  URL=$(shuf -n 1 "$dbfile")
  echo "$URL"
done

Парсинг веб-страниц затруднен, главным образом потому, что HTML является чрезвычайно слабым стандартом, но также и потому, что веб-дизайнеры часто либо некомпетентные отсталые, либо пытаются намеренно запутать свои страницы, либо и то, и другое. Ему нужен более функциональный язык, чем bash .

Лично я пишу веб-роботов на perl , используя libwww-perl aka LWP . Мне особенно нравится модуль perl HTML :: TokeParser как достаточно простой анализатор HTML в сочетании с LWP .

15
05.02.2011, 02:17
0 ответов

Теги

Похожие вопросы