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

首頁 > 編程 > Python > 正文

深入理解Python分布式爬蟲原理

2020-02-16 10:50:42
字體:
來源:轉載
供稿:網友

首先,我們先來看看,如果是人正常的行為,是如何獲取網頁內容的。

(1)打開瀏覽器,輸入URL,打開源網頁

(2)選取我們想要的內容,包括標題,作者,摘要,正文等信息

(3)存儲到硬盤中

上面的三個過程,映射到技術層面上,其實就是:網絡請求,抓取結構化數據,數據存儲。

我們使用Python寫一個簡單的程序,實現上面的簡單抓取功能。

#!/usr/bin/python #-*- coding: utf-8 -*- ''''' Created on 2014-03-16  @author: Kris ''' import urllib2, re, cookielib  def httpCrawler(url):   '''''   @summary: 網頁抓取   '''   content = httpRequest(url)   title = parseHtml(content)   saveData(title)  def httpRequest(url):   '''''   @summary: 網絡請求   '''    try:     ret = None     SockFile = None     request = urllib2.Request(url)     request.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)')     request.add_header('Pragma', 'no-cache')     opener = urllib2.build_opener()     SockFile = opener.open(request)     ret = SockFile.read()   finally:     if SockFile:       SockFile.close()        return ret  def parseHtml(html):   '''''   @summary: 抓取結構化數據   '''   content = None   pattern = '<title>([^<]*?)</title>'   temp = re.findall(pattern, html)   if temp:     content = temp[0]      return content    def saveData(data):   '''''   @summary: 數據存儲   '''   f = open('test', 'wb')   f.write(data)   f.close()    if __name__ == '__main__':   url = 'http://www.baidu.com'   httpCrawler(url) 

看著很簡單,是的,它就是一個爬蟲入門的基礎程序。當然,在實現一個采集過程,無非就是上面的幾個基礎步驟。但是實現一個強大的采集過程,你會遇到下面的問題:

(1)需要帶著cookie信息訪問,比如大多數的社交化軟件,基本上都是需要用戶登錄之后,才能看到有價值的東西,其實很簡單,我們可以使用Python提供的cookielib模塊,實現每次訪問都帶著源網站給的cookie信息去訪問,這樣只要我們成功模擬了登錄,爬蟲處于登錄狀態,那么我們就可以采集到登錄用戶看到的一切信息了。下面是使用cookie對httpRequest()方法的修改:

ckjar = cookielib.MozillaCookieJar() cookies = urllib2.HTTPCookieProcessor(ckjar)     #定義cookies對象 def httpRequest(url):   '''''   @summary: 網絡請求   '''    try:     ret = None     SockFile = None     request = urllib2.Request(url)     request.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)')     request.add_header('Pragma', 'no-cache')     opener = urllib2.build_opener(cookies)    #傳遞cookies對象     SockFile = opener.open(request)     ret = SockFile.read()   finally:     if SockFile:       SockFile.close()        return ret             
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿尔山市| 自治县| 日喀则市| 谢通门县| 西峡县| 教育| 白朗县| 伊春市| 聂拉木县| 馆陶县| 余江县| 宁陵县| 韶山市| 巴塘县| 五指山市| 沛县| 大荔县| 寻乌县| 玛沁县| 黄平县| 右玉县| 青州市| 台中市| 东阿县| 旬阳县| 武邑县| 景泰县| 乌海市| 巨鹿县| 伊吾县| 凤冈县| 孟津县| 利辛县| 惠州市| 文安县| 陆良县| 绥江县| 绥江县| 桂阳县| 镇平县| 南雄市|