Depois de muita pesquisa, nenhuma ferramenta me satisfez, portanto estou codificando o meu usando o link
Eu preciso recuperar um mapa do site inteiro, em um formato como:
Eu preciso que ele seja baseado em links (sem arquivo ou dir brute-force), como:
parse homepage -> retrieve all links -> explore them -> retrieve links, ...
E também preciso da capacidade de detectar se uma página é um "modelo" para não recuperar todas as "páginas-filho". Por exemplo, se os seguintes links forem encontrados:
Preciso ter apenas uma vez o link
Eu olhei para HTTtracks, wget (com opção de spider), mas nada conclusivo até agora.
O software / ferramenta deve estar disponível para download e eu prefiro se ele for executado no Linux. Pode ser escrito em qualquer idioma.
Obrigado
Depois de muita pesquisa, nenhuma ferramenta me satisfez, portanto estou codificando o meu usando o link
Eu pessoalmente uso Kapow Katalyst , mas acho que está fora do seu orçamento. Se não, é provavelmente o software mais intuitivo para criar aranhas, e muito mais se você precisar.
Aqui está um exemplo de um feito em python:
(extraído de link )
Além disso, no site há um link para um link do projeto github, que é uma versão mais robusta que a pessoa fez.
import sys
import re
import urllib2
import urlparse
tocrawl = set(["http://www.facebook.com/"])
crawled = set([])
keywordregex = re.compile('<meta\sname=["\']keywords["\']\scontent=["\'](.*?)["\']\s/>')
linkregex = re.compile('<a\s*href=[\'|"](.*?)[\'"].*?>')
while 1:
try:
crawling = tocrawl.pop()
print crawling
except KeyError:
raise StopIteration
url = urlparse.urlparse(crawling)
try:
response = urllib2.urlopen(crawling)
except:
continue
msg = response.read()
startPos = msg.find('<title>')
if startPos != -1:
endPos = msg.find('</title>', startPos+7)
if endPos != -1:
title = msg[startPos+7:endPos]
print title
keywordlist = keywordregex.findall(msg)
if len(keywordlist) > 0:
keywordlist = keywordlist[0]
keywordlist = keywordlist.split(", ")
print keywordlist
links = linkregex.findall(msg)
crawled.add(crawling)
for link in (links.pop(0) for _ in xrange(len(links))):
if link.startswith('/'):
link = 'http://' + url[1] + link
elif link.startswith('#'):
link = 'http://' + url[1] + url[2] + link
elif not link.startswith('http'):
link = 'http://' + url[1] + '/' + link
if link not in crawled:
tocrawl.add(link)
(Win) HTTrack faz um trabalho muito decente.
It allows you to download a World Wide Web site from the Internet to a local directory, building recursively all directories, getting HTML, images, and other files from the server to your computer.
Tecnicamente falando, não há uma maneira infalível de extrair a estrutura de diretórios de um site.
Isso ocorre porque o HTTP não é um sistema de arquivos de rede. A única coisa que você pode fazer com HTTP é seguir os links da página inicial. Além disso, não há nada que requer a página inicial para ter links apenas para o seu subdiretório imediato. Uma página index.html de nível superior pode, por exemplo, ter um link direto para "foo / baz / blah.html", em algum subdiretório.
Editar:
Para gerar mapas de sites básicos, algumas ferramentas on-line estão disponíveis conhecido como Gerador de Sitemaps . Uma dessas ferramentas é web-site-map.com , fornece sitemap em XML.
Se você se sentir confortável com a programação, poderá escrever o seu próprio web-spider, com um conjunto específico de regras de um site específico.
Tags wget website web-crawler sitemap