【Python 爬虫】 4、爬虫基本原理
爬蟲基本原理
爬蟲的基本流程
1、獲取網頁源代碼:通過請求庫實現,urllib,requests等實現HTTP請求;
2、提取信息:分析網頁源代碼,提取數據,如正則表達式,beautiful soup,pyquery,Ixml等;
3、保存數據:保存至txt,json或數據庫;
抓什么數據
- HTML代碼;
- Json字符串(api接口,手機端大部分是這種數據格式);
- 二進制文件(圖片,音頻,視頻等);
- 各種擴展名的文件(css,Javascript,各種配置文件等);
Javascript渲染頁面
用urllib或者requests抓取網頁的時候,得到的源代碼和瀏覽器中看到的不一樣。
越來越多的網頁采用ajax、前端模塊化工具來構建,整個網頁都是Javascript渲染出來的。需要分析ajax接口,或者使用selenium等庫實現模擬Javascript渲染。
【頁面渲染】
頁面渲染就是瀏覽器的渲染引擎將HTML代碼根據CSS定義的規則顯示在瀏覽器窗口中的過程。
大致工作原理如下:
- 用戶輸入網址,瀏覽器向服務器發出請求,服務器返回html文件;
- 渲染引擎開始載入html代碼,并將HTML中的標簽轉化為DOM節點,生成DOM樹;
- 如果引用了外部CSS文件,則發出CSS文件請求,服務器返回該文件;
- 如果引用了外部JS文件,則發出JS文件請求,服務器返回該文件后開始運行;
- 渲染引擎繼續載入html中的部分的代碼,并開始解析前面返回的CSS文件,然后根據CSS選擇器計算出節點的樣式,創建渲染樹;
- 從根節點遞歸調用,計算每一個元素的大小、位置等,給每個節點所應該出現在屏幕上的精確坐標;
- 如果body中的引用了圖片資源,則立即向服務器發出請求,此時渲染引擎不會等待圖片下載完畢,而是繼續渲染后面的代碼;
- 服務器返回圖片文件,由于圖片占用了一定面積,影響了后面段落的排版,因此引擎需要回過頭來重新渲染這部分代碼;
- 如果此時JS腳本中運行了style.display=”none”, 布局被改變,引擎也需要重新渲染這部分代碼;
- 直到頁面渲染完畢。
cookies
cookies在瀏覽器端,在訪問動態網頁時候瀏覽器會自動附帶上它并發送給服務器,服務器通過識別cookies并鑒定其是哪個用戶,判斷其是否登錄狀態,然后返回對應的響應。
爬蟲代理
代理網絡用戶去取得網絡信息;
代理的作用:突破自身IP訪問限制,訪問團體內部資源,提高訪問速度,隱藏真實IP;
爬蟲代理可以獲得較好的爬取效果(防止被封禁或者輸入驗證碼登錄);
檢查robots.txt
Robots協議(也稱之為爬蟲協議、機器人協議等)的全稱是“網絡爬蟲排除標準”(Robots Exclusion Protocol),網站通過Robots協議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取。
當一個搜索蜘蛛訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,搜索機器人就會按照該文件中的內容來確定訪問的范圍;如果該文件不存在,所有的搜索蜘蛛將能夠訪問網站上的所有沒有被口令保護的頁面。
?
爬蟲的攻與防
?
總結
以上是生活随笔為你收集整理的【Python 爬虫】 4、爬虫基本原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【学习笔记】37、用正则表达式解析和提取
- 下一篇: 【学习笔记】 Python - Pand