2016-04-06 105 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

歡迎來到SO。你到目前爲止嘗試過哪些鱈魚?展示您嘗試過的內容將幫助我們幫助您,並顯示您已付出了一些努力。 –

+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")