Python爬蟲判斷url連結的是下載檔案還是html檔案
阿新 • • 發佈:2019-02-10
最近在寫一個網路爬蟲的程式碼,提供命令列來下載檔案或者是列印根域名下指定節點及深度的子節點。用的是urllib2庫,算是比較簡單,但是功能並沒有很強大。
說重點吧,在實際爬網頁的過程中,一般的過程是一次呼叫下面的三個函式:
req = urllib2.Request(url)
response = urllib2.urlopen(req)
html = response.read()
所得到連結的內容就是儲存在html中,然後便可以進行解析了。
但是在實際的爬蟲中,我們所遇到的url不只是有html檔案的,還有那些下載檔案的連結,而對於這些連結對於爬取整個網路的框架是沒有幫助的,不應當對其呼叫read函式獲取內容。所以就需要對url所連結檔案的型別進行判斷從而過濾掉非html型別的連結。
對於檔案型別的判斷,是通過http header頭部的Content Type項的內容來進行判斷的。對於html型別Content Type的內容為“text/html",其他的可見網址:http://tool.oschina.net/commons。判斷的程式碼如下:
HttpMessage = response.info()
ContentType = HttpMessage.gettype()
if "text/html" != ContentType:
如果是"text/html"型別的,則使用read函式,然後進行解析,否則進行下一個url的解析。