2017-12-20 10 views
2

beautifulsoupパッケージ内に、ユーザーがサイト内でクロールの深さを設定できる機能はありますか?私はPythonには比較的新しいですが、以前はRでRcrawlerを使用していました.Rcrawlerは 'MaxDepth'を提供しているので、クローラはそのドメイン内のホームページから一定数のリンク内に入ります。BeautifulSoupでのクロールの深さ

Rcrawler(Website = "https://stackoverflow.com/", no_cores = 4, no_conn = 4, ExtractCSSPat = c("div"), ****MaxDepth=5****) 

Pythonで私の現在のスクリプトの基本は、ページ上のすべての可視テキストを解析しますが、私はクロールの深さを設定したいと思います。

from bs4 import BeautifulSoup 
import bs4 as bs 
import urllib.request 

def tag_visible(element): 
    if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]']: 
     return False 
    elif isinstance(element,bs.element.Comment): 
     return False 
    return True 


def text_from_html(body): 
    soup = BeautifulSoup(html, 'lxml') 
    texts = soup.findAll(text=True) 
    visible_texts = filter(tag_visible, texts) 
    return u" ".join(t.strip() for t in visible_texts) 

html = urllib.request.urlopen('https://stackoverflow.com/').read() 
print(text_from_html(html)) 

すべての洞察力または方向性が認められます。

+2

BeautifulSoupはクロールではなく解析用です。私は[Scrapy](https://scrapy.org/)がここでうまく合うと信じています。 –

答えて

0

BeautifulSoupcrawlerではないため、BeautifulSoupには機能がありません。
HTMLで文字列を解析するだけで、HTMLで検索できます。

requestsには機能がありません。requestsは、crawlerでもありません。
サーバーからデータを読み取るだけなので、BeautifulSoupなどと併用することができます。

BeautifulSouprequestを使用する場合は、すべて自分で行う必要があります。ゼロからクロールシステムを構築する必要があります。

Scrapyは、実際のクローラです(むしろ、クモの巣やクロールネットワークを構築するためのフレームワークです)。
オプションがありますDEPTH_LIMIT

関連する問題