Site haritasını almak için web sitesi tarayıcısı / örümcek [kapalı]


0

Bir web sitesi haritasını aşağıdaki gibi bir biçimde almam gerekiyor:

Gibi bağlı tabanlı (dosya veya dir brute-force), ihtiyacım var:

ayrıştırma anasayfası - & gt; tüm bağlantıları al - & gt; onları keşfet - & gt; bağlantıları al ...

Ayrıca, bir sayfanın "alt sayfaların" tümünü almamak için "şablon" olup olmadığını belirleme yeteneğine de ihtiyacım var. Örneğin, aşağıdaki bağlantılar bulunursa:

Sadece bir kez almak gerekir http://example.org/product/viewproduct

HTTtracks, wget (örümcek seçeneğiyle) içine baktım, ancak şu ana kadar kesin olan hiçbir şey yok.

Yazılım / araç indirilebilir olmalıdır ve Linux'ta çalışıp çalışmamasını tercih ederim. Herhangi bir dilde yazılabilir.

Teşekkürler

Yanıtlar:



1

Şahsen kullanırım Kapow Katalyst ama sanırım bütçen dışında. Değilse, muhtemelen örümcekler oluşturmak için en sezgisel yazılımdır ve ihtiyacınız olursa çok daha fazlası.


Teşekkürler, bunu bilmiyordum. Şu anda bunun için bütçem olmasa da bir göz atacağım.
ack__

1

İşte python ile yapılanlardan bir örnek:

(Den alınan http://theanti9.wordpress.com/2009/02/14/python-web-crawler-in-less-than-50-lines/ )

Ayrıca bu web sitesinde bir github projesine bağlantı var http://github.com/theanti9/PyCrawler Bu, kişinin yaptığı daha sağlam bir versiyondur.

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)

0

(WinHTTrack çok iyi bir iş yapıyor.

Bir World Wide Web sitesini İnternet'ten yerel bir dizine indirmenize, tekrarlayan bir şekilde tüm dizinleri oluşturmanıza, HTML, resimler ve diğer dosyaları sunucudan bilgisayarınıza indirmenize izin verir.


0

Teknik olarak konuşursak, bir web sitesinin dizin yapısını çıkarmanın kusursuz bir yolu yoktur.

Bunun nedeni, HTTP'nin bir ağ dosya sistemi olmamasıdır. Yapabileceğin tek şey HTTP ile yapmak, başlangıç ​​sayfasındaki bağlantıları takip eder. Ayrıca, başlangıç ​​sayfasının yalnızca bağlantıya sahip olmasını gerektiren hiçbir şey yok hemen alt dizin. Örneğin bir üst seviye index.html sayfası olabilir. bazı alt dizinlerin derinliklerinde "foo / baz / blah.html" dosyasına doğrudan bağlantı.

Düzenle:

  • Temel üretmek site haritaları , Bazı çevrimiçi araçlar yaygın olarak var olarak bilinen Site Haritası Oluşturucu . Böyle bir araç web-site-map.com , XML'de site haritası verir.

  • Programlama konusunda rahatsanız kendi yazınızı yazabilirsiniz. web örümcek, belirli bir sitenin belirli kuralları ile.


Aslında bir takip link tarzı örümcek arıyorum. Yalnızca alt dizinlerle bağlantısı olmayan sitelerde sorun yaşanmaz, soft daha sonra bulunan içeriği kesebilir ve ağaç görünümünde düzenleyebilir. Tüm sitenin içeriğini sunmadıkları için XML site haritalarına güvenmek istemiyorum. Ve kendi örümceğimi programlamak için, bu göründüğünden çok daha karmaşık bir şey (yığın akışındaki çeşitli ipuçlarına bakın) ve çok zaman alıyor.
ack__
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.