Сайт гусеничный / паук, чтобы получить карту сайта [закрыто]

Мне нужно получить целую карту веб-сайта в формате:

Мне нужно, чтобы он был связан (без файла или грубой силы dir), например :

Домашняя страница -> парсим извлечь все ссылки -> исследовать их -> получить ссылки, ...

и мне также нужна возможность определить, является ли страница "шаблоном", чтобы не извлекать все"дочерние страницы". Например, если найдены следующие ссылки :

Мне нужно получить только один раз http://example.org/product/viewproduct

Я просмотрел HTTtracks, wget (с опцией spider), но пока ничего окончательного.

soft / tool должен быть загружаемым, и я предпочитаю, если он работает на Linux. Она может быть написана на любом языке.

спасибо

5
задан ack__
источник

5 ответов

после многих исследований ни один инструмент меня не удовлетворил, поэтому я пишу свой собственный, используяhttp://scrapy.org/doc/

3
отвечен ack__ 2012-09-11 01:09:57
источник

Я лично использую Kapow Katalyst, но я думаю это из вашего бюджета. Если нет, то это, вероятно, самое интуитивное программное обеспечение для создания пауков, и многое другое, если вам нужно.

1
отвечен m4573r 2012-09-13 07:58:56
источник

вот пример один в Python:

(взято из http://theanti9.wordpress.com/2009/02/14/python-web-crawler-in-less-than-50-lines/ )

также на этом сайте есть ссылка на проект githubhttp://github.com/theanti9/PyCrawler то более робастная версия персона сделала.

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)
1
отвечен d4v3y0rk 2014-10-01 16:14:25
источник

(Win)HTTrack делает очень достойную работу.

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

0
отвечен Jan Doggen 2012-09-13 03:16:10
источник

Технически говоря, нет надежного способа извлечения структуры каталогов веб-сайта.

Это потому, что HTTP не является сетевой файловой системой. Единственное, что вы можете сделайте с HTTP следовать ссылкам от стартовой страницы. Кроме того, нет ничего, что требует стартовой странице есть только ссылки на его подкаталогах. A индекс верхнего уровня.HTML-страница может, например, иметь прямая ссылка на " foo/baz / blah.HTML-код", в подкаталог.

Edit:

  • генерировать basic карты сайта, некоторые онлайн-инструменты есть обычно известный как Генератор Sitemap. Одним из таких инструментов являетсяweb-site-map.com, это дает карту сайта в XML.

  • Если вы знакомы с программированием, то вы можете написать свой собственный веб-паук, с определенным набором правил конкретного сайта.

0
отвечен Ankit 2015-11-13 05:59:26
источник

Другие вопросы sitemap web-crawler website wget