最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 網(wǎng)絡(luò)爬蟲(chóng)初級(jí)實(shí)現(xiàn)代碼

 更新時(shí)間:2016年02月27日 23:05:32   作者:ACdreamers  
這篇文章主要介紹了python 網(wǎng)絡(luò)爬蟲(chóng)初級(jí)實(shí)現(xiàn)代碼,需要的朋友可以參考下

首先,我們來(lái)看一個(gè)Python抓取網(wǎng)頁(yè)的庫(kù):urllib或urllib2。

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

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

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

現(xiàn)在有一個(gè)例子,下載一個(gè)網(wǎng)站上所有g(shù)if格式的圖片。那么Python代碼如下:

import re
import urllib

def getHtml(url):
 page = urllib.urlopen(url)
 html = page.read()
 return html

def 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 += 1

if __name__ == '__main__':
 html = getHtml('http://www.baidu.com')
 getImg(html)

根據(jù)上面的方法,我們可以抓取一定的網(wǎng)頁(yè),然后提取我們所需要的數(shù)據(jù)。

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

用Tornado Web Server來(lái)抓取網(wǎng)頁(yè)效率會(huì)比較高。
從Tornado的官網(wǎng)來(lái)看,還要安裝backports.ssl_match_hostname,官網(wǎng)如下:

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

import tornado.httpclient

def 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.body

if __name__ == '__main__':
 Fetch('http://www.baidu.com')

urllib2的常見(jiàn)方法:

(1)info() 獲取網(wǎng)頁(yè)的Header信息

(2)getcode() 獲取網(wǎng)頁(yè)的狀態(tài)碼

(3)geturl() 獲取傳入的網(wǎng)址

(4)read() 讀取文件的內(nèi)容

相關(guān)文章

  • Python中用于去除空格的三個(gè)函數(shù)的使用小結(jié)

    Python中用于去除空格的三個(gè)函數(shù)的使用小結(jié)

    這篇文章主要介紹了Python中用于去除空格的三個(gè)函數(shù)的使用小結(jié),對(duì)strip()和lstrip()和rstrip()這三個(gè)函數(shù)做了簡(jiǎn)單的講解,需要的朋友可以參考下
    2015-04-04
  • python實(shí)現(xiàn)在pickling的時(shí)候壓縮的方法

    python實(shí)現(xiàn)在pickling的時(shí)候壓縮的方法

    這篇文章主要介紹了python實(shí)現(xiàn)在pickling的時(shí)候壓縮的方法,比較具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-09-09
  • Python采集電影評(píng)論實(shí)戰(zhàn)示例

    Python采集電影評(píng)論實(shí)戰(zhàn)示例

    這篇文章主要為大家介紹了Python采集電影評(píng)論實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • TF-IDF算法解析與Python實(shí)現(xiàn)方法詳解

    TF-IDF算法解析與Python實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了TF-IDF算法解析與Python實(shí)現(xiàn)方法詳解,文章介紹了tf-idf算法的主要思想,分享了Python實(shí)現(xiàn)tr-idf算法所必要的預(yù)處理過(guò)程,以及具體實(shí)現(xiàn)代碼等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Python報(bào)錯(cuò):NameError:?name?‘xxx‘?is?not?defined的解決辦法

    Python報(bào)錯(cuò):NameError:?name?‘xxx‘?is?not?defined的解決辦法

    這篇文章主要給大家介紹了關(guān)于Python報(bào)錯(cuò):NameError:?name?‘xxx‘?is?not?defined的解決辦法,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-06-06
  • python信號(hào)量,條件變量和事件詳解

    python信號(hào)量,條件變量和事件詳解

    這篇文章主要為大家介紹了python的信號(hào)量,條件變量和事件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • python常見(jiàn)運(yùn)算符及用法小結(jié)

    python常見(jiàn)運(yùn)算符及用法小結(jié)

    python中的運(yùn)算符主要包括算術(shù)運(yùn)算符,關(guān)系(比較)運(yùn)算符,賦值運(yùn)算符,邏輯運(yùn)算符,成員運(yùn)算符,身份運(yùn)算符,三目運(yùn)算符。使用運(yùn)算符將不同類(lèi)型的數(shù)據(jù)按照一定的規(guī)則連接起來(lái)的式子,稱(chēng)為表達(dá)式。下面將介紹一些常用的運(yùn)算符
    2022-08-08
  • Python使用textract實(shí)現(xiàn)從各種文件中提取文本信息

    Python使用textract實(shí)現(xiàn)從各種文件中提取文本信息

    textract是一個(gè)強(qiáng)大的Python庫(kù),可以用于從各種文件格式中提取文本,本文將介紹textract的使用場(chǎng)景,以及一些常用的Python代碼案例,希望對(duì)大家有所幫助
    2024-01-01
  • Pycharm及python安裝詳細(xì)步驟及PyCharm配置整理(推薦)

    Pycharm及python安裝詳細(xì)步驟及PyCharm配置整理(推薦)

    這篇文章主要介紹了Pycharm及python安裝詳細(xì)步驟以及PyCharm配置整理,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python實(shí)現(xiàn)郵箱發(fā)送信息

    python實(shí)現(xiàn)郵箱發(fā)送信息

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)郵箱發(fā)送信息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評(píng)論

柞水县| 海门市| 武川县| 漳州市| 乳源| 班戈县| 呼伦贝尔市| 牟定县| 康平县| 东阿县| 平罗县| 宁晋县| 柞水县| 华容县| 南安市| 翁牛特旗| 高台县| 民乐县| 宜黄县| 昌宁县| 西乌珠穆沁旗| 武陟县| 华坪县| 洪泽县| 宁陕县| 临澧县| 锦屏县| 东丽区| 建德市| 恩平市| 汕头市| 曲麻莱县| 盖州市| 衢州市| 若尔盖县| 万载县| 丹巴县| 佛坪县| 绩溪县| 离岛区| 布尔津县|