国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python 網絡爬蟲初級實現代碼

2020-01-04 17:41:47
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了python 網絡爬蟲初級實現代碼,需要的朋友可以參考下
 

首先,我們來看一個Python抓取網頁的庫:urllib或urllib2。

那么urllib與urllib2有什么區別呢?
可以把urllib2當作urllib的擴增,比較明顯的優勢是urllib2.urlopen()可以接受Request對象作為參數,從而可以控制HTTP Request的header部。
做HTTP Request時應當盡量使用urllib2庫,但是urllib.urlretrieve()函數以及urllib.quote等一系列quote和unquote功能沒有被加入urllib2中,因此有時也需要urllib的輔助。

urllib.open()這里傳入的參數要遵循一些協議,比如http,ftp,file等。例如:

urllib.open('http://www.baidu.com')
urllib.open('file:D/Python/Hello.py')

現在有一個例子,下載一個網站上所有gif格式的圖片。那么Python代碼如下:

import reimport urllibdef getHtml(url): page = urllib.urlopen(url) html = page.read() return htmldef getImg(html): reg = r'src="(.*?/.gif)"' imgre = re.compile(reg) imgList = re.findall(imgre,html) print imgList cnt = 1 for imgurl in imgList:  urllib.urlretrieve(imgurl,'%s.jpg' %cnt)  cnt += 1if __name__ == '__main__': html = getHtml('http://www.baidu.com') getImg(html)

根據上面的方法,我們可以抓取一定的網頁,然后提取我們所需要的數據。

實際上,我們利用urllib這個模塊來做網絡爬蟲效率是極其低下的,下面我們來介紹Tornado Web Server。
Tornado web server是使用Python編寫出來的一個極輕量級、高可伸縮性和非阻塞IO的Web服務器軟件,著名的Friendfeed網站就是使用它搭建的。Tornado跟其他主流的Web服務器框架(主要是Python框架)不同是采用epoll非阻塞IO,響應快速,可處理數千并發連接,特別適用用于實時的Web服務。

用Tornado Web Server來抓取網頁效率會比較高。
從Tornado的官網來看,還要安裝backports.ssl_match_hostname,官網如下:

http://www.tornadoweb.org/en/stable/

import tornado.httpclientdef Fetch(url): http_header = {'User-Agent' : 'Chrome'} http_request = tornado.httpclient.HTTPRequest(url=url,method='GET',headers=http_header,connect_timeout=200,request_timeout=600) print 'Hello' http_client = tornado.httpclient.HTTPClient() print 'Hello World' print 'Start downloading data...' http_response = http_client.fetch(http_request) print 'Finish downloading data...' print http_response.code all_fields = http_response.headers.get_all() for field in all_fields:  print field print http_response.bodyif __name__ == '__main__': Fetch('http://www.baidu.com')

urllib2的常見方法:

 

(1)info() 獲取網頁的Header信息

(2)getcode() 獲取網頁的狀態碼

(3)geturl() 獲取傳入的網址

(4)read() 讀取文件的內容


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 惠安县| 大竹县| 科技| 周口市| 梓潼县| 贡觉县| 虹口区| 淮南市| 二手房| 休宁县| 巩义市| 祁连县| 沈阳市| 囊谦县| 青海省| 肥西县| 喀喇沁旗| 八宿县| 大理市| 和静县| 郴州市| 阜平县| 广宁县| 五大连池市| 松江区| 二连浩特市| 沐川县| 咸宁市| 醴陵市| 五台县| 卓资县| 报价| 桃源县| 焦作市| 思茅市| 佳木斯市| 丘北县| 盐津县| 乐亭县| 正蓝旗| 喀喇|