天天看點

python爬取履歷_python爬蟲爬取智聯履歷?

一、網頁請求方式

GET方法和POST 方法。與 POST 相比,GET 的安全性較差,因為所發送的資料是 URL 的一部分。在發送密碼或其他敏感資訊時絕不要使用 GET 方法。POST 比 GET 更安全,因為參數不會被儲存在浏覽器曆史或 web 伺服器日志中。GET的資料在 URL 中對所有人都是可見的。POST的資料不會顯示在 URL 中。一般來說,GET 方法請求的網頁一般相對簡單,在靜态網頁中會經常用到;而POST方法請求一般需要傳入資料參數,在動态網頁中經常會出現。

二、設定延時

合理控制速度是你不應該破壞的規則。過度消耗别人的伺服器資源會讓你置身于非法境地,更嚴重的是這麼做可能會把一個小型網站拖垮甚至下線。拖垮網站是不道德的,是徹頭徹尾的錯誤。是以請控制采集速度!

有一些防護措施完備的網站可能會阻止你快速地送出表單,或者快速地與網站進行互動。即使沒有這些安全措施,用一個比普通人快很多的速度從一個網站下載下傳大量資訊也可能讓自己被網站封殺。

是以,雖然多線程程式可能是一個快速加載頁面的好辦法——在一個線程中處理資料,另一個線程中加載頁面——但是這對編寫好的爬蟲來說是恐怖的政策。還是應該盡量保證一次加載頁面加載且資料請求最小化。如果條件允許,盡量為每個頁面通路增加一點兒時間間隔,即使你要增加一行代碼:

time.sleep(3)

或者設定更長的時間,也可以增加随機數,更加自适應一些。

三、僞裝成浏覽器

除了處理網站表單,requests 子產品還是一個設定請求頭的利器,建議大家在請求網頁的時候盡量多用該子產品。HTTP 的請求頭是在你每次向網絡伺服器發送請求時,傳遞的一組屬性和配置資訊。HTTP 定義了十幾種古怪的請求頭類型,不過大多數都不常用。一般用的比較多的是:User-Agent、Referer、Host、Accept等。

某些網站反感爬蟲的到訪,于是對爬蟲一律拒絕請求。是以用urllib2直接通路網站經常會出現HTTP Error 403: Forbidden的情況

對有些 header 要特别留意,Server 端會針對這些 header 做檢查

1.User-Agent 有些 Server 或 Proxy 會檢查該值,用來判斷是否是浏覽器發起的 Request

2.Content-Type 在使用 REST 接口時,Server 會檢查該值,用來确定 HTTP Body 中的内容該怎樣解析。

這時可以通過修改http包中的header來實作,代碼片段如下:

四、 設定cookie

在采集一些網站時 cookie 是不可或缺的。要在一個網站上持續保持登入狀态,需要在多個頁面中儲存一個 cookie。有些網站不要求在每次登入時都獲得一個新 cookie,隻要儲存一個舊的“已登入”的 cookie 就可以通路。

cookies是某些網站為了辨識使用者身份、進行session跟蹤而儲存在使用者本地終端上的資料(通常經過加密),python提供了cookielib子產品用于處理cookies,cookielib子產品的主要作用是提供可存儲cookie的對象,以便于與urllib2子產品配合使用來通路Internet資源.

五、選擇器

選擇器一般有正規表達式、Bs4、Xpath、CSS。關于這些選擇器的使用可以參考小編的文章,

對于頁面解析最強大的當然是正規表達式,這個對于不同網站不同的使用者都不一樣。

正規表達式晦澀難懂,一般用到的時候去翻教程就可以了,如正規表達式入門、正規表達式線上測試等,如果你可以記住部分表達式,那就最好不過了。

其次就是解析庫了,常用的有兩個lxml和BeautifulSoup。這兩個庫,都是HTML/XML的處理庫,Beautifulsoup純python實作,效率低,但是功能實用,比如能用通過結果搜尋獲得某個HTML節點的源碼;lxml是由C語言編碼,開發速度快,高效,支援Xpath和CSS文法

為了給大家建立一個學習Python的氛圍,小編為大家建立了一個Python學習群: 710708826,群裡有小編的同僚也會不定期共享幹貨,不論你是小白還是大牛,小編都非常地歡迎您的加入,讓我們一起為學習Python而奮鬥吧!

除了上面這幾種常見的網絡爬蟲政策和技巧之外,還有許多其他的技巧,比方說:表單的處理、驗證碼的處理、多線程并發設定、多協程的設定、多程序的設定、gzip壓縮等。