Python入門小建議

"java從心"正式改名"KEN DO EVERTHING"。Ken(Can) Do Everything,無所不能html

Believe youseft then you can do everthing !java

我也是剛踏入python的大門,因此只能給點小建議,而不是指導(暫時只接觸了python爬蟲)python

入門3部曲mysql

1.語法學習,推薦能夠看菜鳥教程上的python3語法git

https://www.runoob.com/python3/python3-tutorial.htmlgithub

有其餘語言基礎的人,其實能夠隨便過一遍,由於python語法很簡單,不看語法也能直接看懂,實在不懂的時候再返回去查,效果可能會更好面試

2.視頻學習,推薦廖老師python爬蟲實戰課程。算法

公衆號後臺發送【python爬蟲】獲取sql

千萬別隻看,看完相關視頻得本身動手實戰纔會有收穫!瀏覽器

3.實戰項目,找幾個本身想爬取的網站,試着用本身學到的東西,開始瞎搞吧!

當時實戰遇到都是動態js生成的頁面,無法直接從response獲取數據,因此使用了selenium框架。

說幾點須要注意的地方

1.別將selenium集成到scrapy上使用(多是拙見,若有錯誤務必糾正我)

由於Scrapy中Spirder的parse方法是單線程的,response交由parse處理時是隊列串行的,使用selenium就不能同時打開多個瀏覽器爬取了,selenium原本就夠慢了,因此別將selenium集成到scrapy。能夠單獨使用selenium而後開啓多線程去爬取,會快不少。

(後面我才發現,原來scrapy也有爬取動態網頁的庫scrapy-splash!)。不過因爲selenium出現的比較早,使用scrapy-splash的人會比selenium的少)

2.不要用time.sleep去等待頁面加載

由於你根本不知道它真實加載時間是多久,設置多了就浪費時間,少了可能網頁還沒加載不出來。

對於selenium框架,推薦使用

WebDriverWait(driver, 10).until(特定元素),設置一個時間,等待出現某個特定元素,未出現則會拋出超時異常。而後能夠加上重試操做,重試必定次數後放棄此次爬取,最簡單的方式就是使用循環。

3.反爬

發現爬取程序出了問題,沒法爬取數據,能夠考慮下,是否是網站使用了一些反爬策略,這時就須要使用對應的反反爬方法去應對了

主要反爬策略有下面幾種:

①判斷User-Agent,是否爲瀏覽器;

②判斷短期內同一個IP訪問次數;

③用戶登陸後才能訪問資源;

④短期用戶使用不一樣IP訪問資源,異常登陸;

⑤驗證碼,滑動點擊驗證;

⑥數據加解密處理;

對於不一樣反爬策略,可使用不一樣應對方式:

①User-Agent:發起請求時候添加頭信息,假裝瀏覽器;

②短期內訪問次數限制:可使用代理或者延時爬取;

③登陸後訪問:模擬登陸保存cookie,請求時添加cookie信息;

④異常登陸:準備大量帳號,綁定不一樣代理進行爬取;

⑤驗證碼:使用對應python庫進行處理,github上面能夠找到;

⑥數據加解密處理:使用對應算法進行破解,或者使用selenium進行抓取;

4.代碼中需考慮所爬取網站的穩定性

網站可能會出現如下幾種狀況

1.所爬取網站性能不好,頁面有時響應很慢

2.有時網站直接崩掉

3.處於維護狀態

代碼中必須考慮這些狀況的出現,寫對應的異常與處理邏輯,不然爬蟲程序會崩掉或卡住

5.爬蟲程序不是永久可用的

不論是分析頁面仍是解析response的爬取,都是別人東西,萬一網站有所改動,你的程序就不可用了。 若是你接了爬蟲項目,這一點必須提早告知客戶

好叻,我就懂這麼一點,都告訴你了。

去開啓你的python之旅吧


文章首發於公衆號【KEN DO EVERTHING】 本公衆號專一於java相關技術,但不限於java、mysql、python、面試技巧、生活感悟等。分享優質博文,技術乾貨,學習資源等優質內容。 歡迎關注,一塊兒學習,共成長!

相關文章
相關標籤/搜索