入職公司已經數周,因為寫了不少爬蟲,對爬蟲的代碼有些心得,因此記錄一下,
一、獲取html頁面的方法
通過python獲取頁面的常用方法有requests和selenium方法,當然使用python自帶的urllib也可以獲取html頁面,但是其使用邏輯實在是復雜,相比之下,requests方法更像是給人類使用的方法,
1、requests可以通過get或者post來獲取頁面資訊,對于使用GET方式的頁面,可以使用requests.get(url)來獲取相應的網頁源代碼,POST方式也是常見的網頁訪問方法,有些網頁只能通過POST方法來訪問,如果此時采用GET方法訪問的話,網站就會回傳錯誤的資訊,使用POST方法,通常需要傳入字典或者JSON格式的資料,這個資料需要通過游覽器的network觀察來得到其格式型別,
2、selenium原本是一種自動化的測驗工具,其也可以解決一些requests無法解決的問題,selenium在使用中,需要先下載相應的游覽器驅動,放置于游覽器根目錄和python根目錄中,并添加到環境變數中去,之后,便可以通過selenium來控制游覽器的行為,selenium在某種程度上相當于模擬了人上網的行為,因為代碼邏輯更容易理解,
二、html頁面的決議
獲取到html頁面后,如果定位到需要的內容呢,python提供了多種方法,包括正則運算式、Xpath和Beatiful Soup,包括selenium也提供了一些尋找網頁元素的方法,
1、首先從正則運算式說起,對于靜態頁面來說,正則運算式幾乎是萬能的存在,可以說,只要精通了正則運算式,爬取靜態頁面就不在話下了,需要注意的是,正則運算式默認是貪婪匹配,即匹配其所有匹配的最長字符,而在末尾加上?后,則匹配相應的最短字符,一般來說,正則運算式(.*?)可以完成大部分的匹配任務,
2、xpath是一種查詢語言,它可以在html樹狀結構中尋找節點,即一種根據地址找尋內容的語言,xpath是我最喜歡使用的一種方法,因為使用正則運算式時,經常會出現不明原因而無法提取想要的內容的情況,而xpath,利用谷歌游覽器提供的工具,可以很好的定位所需內容的位置,使用熟練后,可以大大提高代碼的撰寫效率,
3、Beatiful Soup4即bs4,是python的一個第三方庫,可以從html和xml中提取資料,bs4由于是使用python開發,運行速度上比xpath要慢,bs4通過find_all()和find()來查找內容,
三、編碼問題
爬蟲爬取的內容,有時候會是亂碼的情況,需要進行相應的編碼處理
四、反爬蟲
反爬蟲的手段主要包括換headers,隨機睡眠時間和使用代理ip
五、存盤
1、存盤到文本中
2、存盤到資料庫中
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/152676.html
標籤:其他
上一篇:淺析python迭代器和生成器
下一篇:python風格代碼薈萃
