爬蟲細節總結
request:
request物件是從客戶端向伺服器發出請求,包括使用者提交的資訊以及客戶端的一些資訊。客戶端可通過HTML表單或在網頁地址後面提供引數的方法提交資料,然後通過request物件的相關方法來獲取這些資料。
在爬蟲中的request其實就是通過python向伺服器發出request請求(客戶端向伺服器端發起請求),得到其返回的資訊。
Request中包含什麼?
基本GET請求(URL headers引數 和 parmas引數)
1. 最基本的GET請求可以直接用get方法
response = requests.get("http://www.baidu.com/")
- response的常用方法:
- response.text 返回解碼後的字串
- respones.content 以位元組形式(二進位制)返回。
- response.status_code 響應狀態碼
- response.request.headers 請求的請求頭
- response.headers 響應頭
- response.encoding = 'utf-8' 可以設定編碼型別
- response.encoding 獲取當前的編碼
- response.json() 內建的JSON解碼器,以json形式返回,前提返回的內容確保是json格式的,不然解析出錯會拋異常
基本POST請求(data引數)
最基本的GET請求可以直接用post方法
2. 傳入data資料
對於 POST 請求來說,我們一般需要為它增加一些引數。那麼最基本的傳參方法可以利用 data 這個引數
正規表示式(re)
為什麼要學正規表示式?
因為我們下載下了的資料是全部的網頁,這些資料很龐大並且很混亂,大部分的東西使我們不關心的,因此我們需要將之按我們的需要過濾和匹配出來。
那麼對於文字的過濾或者規則的匹配,最強大的就是正規表示式,是Python爬蟲世界裡必不可少的神兵利器。
正規表示式:又稱規則表示式,通常被用來檢索、替換那些符合某個模式(規則)的文字。
使用正規表示式要達到的目的是什麼呢?
- 給定的字串是否符合正規表示式的過濾邏輯(“匹配”);
- 通過正規表示式,從文字字串中獲取我們想要的特定部分(“過濾”)
正規表示式的匹配規則如下:
Python 的 re 模組
在 Python 中,我們可以使用內建的 re 模組來使用正規表示式。
re 模組的一般使用步驟如下:
- 使用 compile() 函式將正規表示式的字串形式編譯為一個 Pattern 物件
- 通過 Pattern 物件提供的一系列方法對文字進行匹配查詢,獲得匹配結果,一個 Match 物件。
- 最後使用 Match 物件提供的屬性和方法獲得資訊,根據需要進行其他的操作
compile 函式
compile 函式用於編譯正規表示式,生成一個 Pattern 物件
findall
findall 以列表形式返回全部能匹配的子串,如果沒有匹配,則返回一個空列表。
正則規則學習參考網站:正則學習網站
xpath選擇器
我正則用的不好,處理HTML文件很累,有沒有其他的方法?
有!那就是XPath,我們可以先將 HTML檔案 轉換成 XML文件,然後用 XPath 查詢 HTML 節點或元素。
什麼是XPath?
XPath (XML Path Language) 是一門在 XML 文件中查詢資訊的語言,可用來在 XML 文件中對元素和屬性進行遍歷。
文件:w3c官方文件xpath
注意:在使用XPath的語法運用到Python抓取時要先轉換為xml。
lxml庫
lxml 是 一個HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 資料。
初步使用
我們利用它來解析 HTML 程式碼,簡單示例:
BeautifulSoup4選擇器
和 lxml 一樣,Beautiful Soup 也是一個HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 資料。
lxml 只會區域性遍歷,而Beautiful Soup 是基於HTML DOM的,會載入整個文件,解析整個DOM樹,因此時間和記憶體開銷都會大很多,所以效能要低於lxml。
BeautifulSoup 用來解析 HTML 比較簡單,API非常人性化,支援CSS選擇器、Python標準庫中的HTML解析器,也支援 lxml 的 XML解析器。
例子:
PyQuery簡介
pyquery相當於jQuery的python實現,可以用於解析HTML網頁等。它的語法與jQuery幾乎完全相同,對於使用過jQuery的人來說很熟悉,也很好上手
#pyquery語法規則類似於Jquery,可以對html文字進行解析
pq('css選擇器')
items():獲取到多個標籤時,使用items()將PyQuery轉換為一個生成器
然後在使用for in 迴圈filter('css選擇器'):過濾text():獲取標籤的文字attr('屬性名')獲取屬性值
什麼是多執行緒?
CPU是計算機計算的基本單位,用來計算和處理任務 可以包含多個程式,程式中可以包含多個執行緒,程式、執行緒、鎖lock(阻塞)。
多執行緒,密集的I/O操作、讀寫
多程式:用於密集的計算,一個cpu只能執行一個程式
使用多執行緒會讓爬蟲進行多工的爬取。快捷,高效。
什麼是selenium?
Selenium是一個Web的自動化測試工具,最初是為網站自動化測試而開發的,型別像我們玩遊戲用的按鍵精靈,可以按指定的命令自動操作,不同是Selenium 可以直接執行在瀏覽器上,它支援所有主流的瀏覽器(包括PhantomJS這些無介面的瀏覽器)。 Selenium 可以根據我們的指令,讓瀏覽器自動載入頁面,獲取需要的資料,甚至頁面截圖,或者判斷網站上某些動作是否發生。
它用於爬蟲中的作用?
Selenium測試直接執行在瀏覽器中,就像真正的使用者在操作一樣。支援的瀏覽器包括IE、Mozilla Firefox、Mozilla Suite等。使用它爬取頁面也十分方便,只需要按照訪問步驟模擬人在操作就可以了,完全不用操心Cookie,Session的處理,它甚至可以幫助你輸入賬戶,密碼,然後點選登陸按鈕。
相關文章
- 細節總結
- 爬蟲個人總結爬蟲
- 爬蟲專案總結爬蟲
- 網路爬蟲流程總結爬蟲
- 猿人學爬蟲攻防賽總結爬蟲
- 分散式爬蟲總結和使用分散式爬蟲
- 使用 Golang 寫爬蟲經驗總結Golang爬蟲
- 一入爬蟲深似海,總結python爬蟲學習筆記!爬蟲Python筆記
- Oracle細節及難點總結Oracle
- Python-爬蟲工程師-面試總結Python爬蟲工程師面試
- 3.爬蟲 urlib庫講解 總結爬蟲
- 6.爬蟲 requests庫講解 總結爬蟲
- 看FCOS時的小細節總結
- 【總結】10款Python爬蟲框架!Python入門Python爬蟲框架
- 爬蟲學習中的一些總結爬蟲
- 【總結】Python爬蟲面試題及答案(二)Python爬蟲面試題
- 網路爬蟲常見問題(個人總結)爬蟲
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- python爬蟲總是爬不到資料,你需要解決反爬蟲了Python爬蟲
- Python爬蟲小結(轉)Python爬蟲
- Java 月薪25K的爬蟲工程師對爬蟲的流程做了一個非常全面的總結!Java爬蟲工程師
- MySQL事務細枝末節總結與分析[更新]MySql
- 爬蟲抓取網頁的詳細流程爬蟲網頁
- 網路爬蟲詳細設計方案爬蟲
- python爬蟲之解析連結Python爬蟲
- Linux中atime,ctime與mtime的細節疑問總結Linux
- 深入Weex系列(九)Weex SDK可借鑑細節總結
- 爬蟲代理 Scrapy 框架詳細介紹 2爬蟲框架
- 爬蟲:多程式爬蟲爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- C#爬蟲開發小結C#爬蟲
- 通用爬蟲與聚焦爬蟲爬蟲
- 爬蟲--Scrapy簡易爬蟲爬蟲
- 這可能是你見過的最全的網路爬蟲總結爬蟲
- 網路爬蟲直播觀看總結(掘金直播第十期)爬蟲
- 反爬蟲之字型反爬蟲爬蟲
- 爬蟲進階:反反爬蟲技巧爬蟲
- Oracle總結【SQL細節、多表查詢、分組查詢、分頁】OracleSQL