SPIDR ist eine vielseitige Ruby -Webspinnenbibliothek, die eine Site, mehrere Domänen, bestimmte Links oder unendlich spinnen kann. SPIDR ist so konzipiert, dass er schnell und einfach zu bedienen ist.
a Tags.iframe -Tags.frame -Tags./robots.txt Support.Beginnen Sie mit einer URL von Spidering:
Spidr . start_at ( 'http://tenderlovemaking.com/' ) do | agent |
# ...
endSpinne ein Host:
Spidr . host ( 'solnic.eu' ) do | agent |
# ...
endSpinne eine Domäne (und alle Unterdomains):
Spidr . domain ( 'ruby-lang.org' ) do | agent |
# ...
endSpinne eine Seite:
Spidr . site ( 'http://www.rubyflow.com/' ) do | agent |
# ...
endSpinne mehrere Hosts:
Spidr . start_at ( 'http://company.com/' , hosts : [ 'company.com' , /host[ d ]+ . company . com/ ] ) do | agent |
# ...
endSpinnen Sie bestimmte Links nicht an:
Spidr . site ( 'http://company.com/' , ignore_links : [ %{^/blog/} ] ) do | agent |
# ...
endSpinnen Sie keine Links in bestimmten Ports aus:
Spidr . site ( 'http://company.com/' , ignore_ports : [ 8000 , 8010 , 8080 ] ) do | agent |
# ...
endSpinnenverbindungen nicht in Robots.txt auf die auf die Blacklist gelistete Links einstellen:
Spidr . site ( 'http://company.com/' , robots : true ) do | agent |
# ...
endDrucken Sie besuchte URLs aus:
Spidr . site ( 'http://www.rubyinside.com/' ) do | spider |
spider . every_url { | url | puts url }
endErstellen Sie eine URL -Karte einer Website:
url_map = Hash . new { | hash , key | hash [ key ] = [ ] }
Spidr . site ( 'http://intranet.com/' ) do | spider |
spider . every_link do | origin , dest |
url_map [ dest ] << origin
end
endDrucken Sie die URLs aus, die nicht angefordert werden konnten:
Spidr . site ( 'http://company.com/' ) do | spider |
spider . every_failed_url { | url | puts url }
endFindet alle Seiten, die gebrochene Links haben:
url_map = Hash . new { | hash , key | hash [ key ] = [ ] }
spider = Spidr . site ( 'http://intranet.com/' ) do | spider |
spider . every_link do | origin , dest |
url_map [ dest ] << origin
end
end
spider . failures . each do | url |
puts "Broken link #{ url } found in:"
url_map [ url ] . each { | page | puts " #{ page } " }
endSuche HTML- und XML -Seiten:
Spidr . site ( 'http://company.com/' ) do | spider |
spider . every_page do | page |
puts ">>> #{ page . url } "
page . search ( '//meta' ) . each do | meta |
name = ( meta . attributes [ 'name' ] || meta . attributes [ 'http-equiv' ] )
value = meta . attributes [ 'content' ]
puts " #{ name } = #{ value } "
end
end
endDrucken Sie die Titel auf jeder Seite aus:
Spidr . site ( 'https://www.ruby-lang.org/' ) do | spider |
spider . every_html_page do | page |
puts page . title
end
endDrucken Sie jede HTTP -Umleitung aus:
Spidr . host ( 'company.com' ) do | spider |
spider . every_redirect_page do | page |
puts " #{ page . url } -> #{ page . headers [ 'Location' ] } "
end
endFinden Sie, welche Arten von Webservern ein Host verwendet, indem Sie auf die Header zugreifen:
servers = Set [ ]
Spidr . host ( 'company.com' ) do | spider |
spider . all_headers do | headers |
servers << headers [ 'server' ]
end
endPause die Spinne auf einer verbotenen Seite:
Spidr . host ( 'company.com' ) do | spider |
spider . every_forbidden_page do | page |
spider . pause!
end
endÜberspringen Sie die Verarbeitung einer Seite:
Spidr . host ( 'company.com' ) do | spider |
spider . every_missing_page do | page |
spider . skip_page!
end
endÜberspringen Sie die Verarbeitung von Links:
Spidr . host ( 'company.com' ) do | spider |
spider . every_url do | url |
if url . path . split ( '/' ) . find { | dir | dir . to_i > 1000 }
spider . skip_link!
end
end
end $ gem install spidrSiehe {Datei: lizenz.txt} für Lizenzinformationen.