2016-04-06 10 views
0

私はドメインで始まり、サイトからすべてのリンクを抽出し、次に引き続きそれらのリンクからリンクを抽出する必要があります。しかし、私は与えられたドメインの一部であるリンクをたどることになっています。私はBeautifulSoupを使用しています。私がこれを行うと考えることができる唯一の方法は、hrefが 'href =' www.someotherdomain.com 'の形式かhref =' page1/page2 'の形式かをテストすることです。前者は、リンクが新しいドメインを指し示し、後者は、リンクが同じドメイン内のページを指し示すことを示すであろう。Pythonを使用して特定のドメインのみをクロールする方法はありますか?

私はすでにリンクに独自のドメインがあるかどうかを確認するためにhas_domainという関数を作成しました。コードは次のようになります:

def has_domain(url): 
    if 'www.' in url: 
     return True 
    else: 
     return False 

シードドメイン外のすべてのリンクが「www」で始まるわけではありません。リンクが新しいドメインを指しているかどうかを確認する簡単な方法はありますか?

+0

ようこそ。これまでにどのようなタラを試しましたか?あなたが試したことを示すことは、私たちがあなたを助け、あなたがそれに何らかの努力をしたことを示すのにも役立ちます。 –

+0

リチャード・リチャードに感謝します。私の編集内容が私が試したことを示してくれることを願っています。 – mdb1991

答えて

0

urlparseを使用してホスト名を取得し、それがリストにあるかどうかをチェックしたり、直接文字列と比較したりすることができます。

ドメインのリストと比較した例です。「www」のパターンを別のドメイン名として扱うことに注意してください。

from urlparse import urlparse 

url_list = ["example.com", "www.example.com"] 

def has_domain(url): 
    p = urlparse(url) 
    if p.hostname in url_list: 
     return True 
    else: 
     return False 

print has_domain("http://www.example.com") 
関連する問題