爬蟲的簡要概括

  1. 爬蟲分爲五個基本構架:
    調度器:相當於一臺電腦的CPU,主要負責調度URL管理器、下載器、解析器之間的協調工作。
    URL管理器:包括待爬取的URL地址和已爬取的URL地址,防止重複抓取URL和循環抓取URL,實現URL管理器主要用三種方式,通過內存、數據庫、緩存數據庫來實現。
    網頁下載器:通過傳入一個URL地址來下載網頁,將網頁轉換成一個字符串,網頁下載器有urllib2(Python官方基礎模塊)包括需要登錄、代理、和cookie,requests(第三方包)
    網頁解析器:將一個網頁字符串進行解析,可以按照我們的要求來提取出我們有用的信息,也可以根據DOM樹的解析方式來解析。網頁解析器有正則表達式(直觀,將網頁轉成字符串通過模糊匹配的方式來提取有價值的信息,當文檔比較複雜的時候,該方法提取數據的時候就會非常的困難)、html.parser(Python自帶的)、beautifulsoup(第三方插件,可以使用Python自帶的html.parser進行解析,也可以使用lxml進行解析,相對於其他幾種來說要強大一些)、lxml(第三方插件,可以解析 xml 和 HTML),html.parser 和 beautifulsoup 以及 lxml 都是以 DOM 樹的方式進行解析的。
    數據存儲器:用於將HTML解析器解析出來的數據通過文件或者數據庫形式儲存起來

  2. 數據採集過程
    瀏覽器 (請求request)
    輸入URL地址(http://www.baidu.com/)
    http協議確定, www.baidu.com訪問的域名確定
    DNS服務器解析到IP地址
    確定要訪問的網頁內容
    將獲取到的頁面內容返回給瀏覽器(響應過程)

  3. 爬蟲的步驟
    (1)瀏覽器向DNS服務器請求解析該URL中的域名所對應的IP地址
    (2)解析出IP地址後,根據IP地址和默認端口,和服務器建立TCP連接
    (3)瀏覽器發出讀取文件的http請求,該請求報文作爲TCP三次握手的第三個報文的數據發送給服務器
    (4)服務器對瀏覽器請求做出響應,並把對應的html文件發送給瀏覽器
    (5)釋放TCP連接
    (6)瀏覽器將該HMTL渲染並顯示內容

  4. TCP/UDP區別
    TCP協議是面向連接,保證高可靠性(數據無丟失,數據無失序,數據無錯誤,數據無重複達到)傳輸層協議
    UDP:數據丟失,無秩序的傳輸層協議(qq基於udp協議)

  5. 迭代器與生成器
    迭代可迭代對象對應iter(方法)和迭代器對應next(方法)的一個過程
    生成器:包括含有yield這個關鍵字,生成器也是迭代器,調動next把函數變成迭代器。

  6. 閉包
    必須有一個內嵌函數
    內嵌函數必須引用外部函數的變量
    外部函數的返回值必須是內嵌函數

  7. Python是如何進行內存管理的
    (1)對象引用計數:
    引用計數增加的情況:
    來保持追蹤內存中的對象,所有對象都用引用計數,一個對象分配一個新名稱將其放入一個容器中(列表,字典,元祖)引用計數減少的情況:
    使用del語句對對象別名顯示的銷燬;
    引用超出作用域或被重新賦值;
    sys.getrefcount()函數可以獲得對象的當前引用計數
    (2)標記-清除機制
    (3)分代技術

發佈了54 篇原創文章 · 獲贊 2 · 訪問量 2325
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章