滑塊驗證碼的嘗試博客地址: https://cloud.tencent.com/developer/article/1191105
ActionChains方法:
move_to_element(to_element) ---- 鼠標移動到某個元素
click_and_hold(on_element = None) --- 點擊鼠標左鍵,不鬆開
move_by_offset(xoffset, yoffset) ---- 鼠標從當前位置移動到某個座標
release(on_element = None) -- 在某個元素位置鬆開鼠標左鍵
perform() ---- 執行操作,這個很重要,調用上面的方法後,一定要執行perform才能真正執行
崔慶才大神的網絡爬蟲乾貨總結鏈接: https://cloud.tencent.com/developer/article/1366434
從抓取、解析、存儲、反爬、加速五個方面介紹了Python進行網絡爬蟲開發的相關知識點和技巧,
一。 抓取
服務端渲染: 使用基本的HTTP請求庫就可抓取, 應用最多的是requests
客戶端渲染方法有四種:
1. 尋找Ajax接口, 通過設置代理來查看接口比如 Fiddler/Charles;
2. 模擬瀏覽器執行, 適用於網絡接口和邏輯較複雜情況, 直接抓可見數據, 比如 Selenium, Spynner, pyppeteer, PhantomJs等;
3. 直接提取JS數據, 直接使用正則表達式;
4. 模擬執行JS, 直接執行相關的JS來完成邏輯處理和接口請求,比如Selenium, PyExecJS, PyV8, js2py等庫
二、 解析
HTML解析: 正則、XPath、 CSS selector
JSON解析: Json庫
智能解析: readability算法, 疏密度,Scrapyly自學習,深度學習
三、存儲
文件: JSON, CSV, TXT等, csv, xlwt, json, pandas等
數據庫: 關係型數據庫,非關係型數據庫, pymysql, pymssql, redis-py, pymongo等
搜索引擎: Solr, ElasticSearch 便於檢索和實現文本匹配
雲存儲: 七牛雲、阿里雲、騰訊雲等
四、 反爬 包括:非瀏覽器檢測、封IP、驗證碼、封賬號、字體反爬
封IP: 1. 手機站點、App站點;2. 使用代理; 3. 在代理基礎上維護代理池;4. 搭建ADSL撥號代理
驗證碼:
1. 普通圖形驗證碼, 使用OCR識別,機器學習、深度學習模型訓練等,打碼平臺簡便
2. 算術題驗證碼, 推薦 打碼平臺
3. 滑動驗證碼, 可以破解算法,也可以模擬滑動,或者對接打碼平臺(超級鷹),深度學習訓練識別接口等;
4. 點觸驗證碼, 推薦打碼平臺
5. 手機驗證碼,使用驗證碼分發平臺
6. 掃二維碼, 人工掃碼或 對接打碼平臺
封賬號:
1. 手機站或APP站點, 校驗較弱;
2. 尋找無登錄接口
3. 維護Cookies池, 使用批量賬號模擬登陸, 實現鏈接:https://github.com/Python3WebSpider/CookiesPool
五、加速
多線程、多進程: threading或multiprocessing
異步: 使用asyncio, aiohttp, Tornado, pyspider
分佈式: pyspider, Scrapy-Redis
優化: