seleniums實踐爬取安居客
最近在微信群裡面看到一個小夥關於爬蟲技術問題的求助資訊,所以今天就根據這個求助資訊分享一篇簡單的爬蟲文章。群裡這位小夥伴的需求是爬取安居客上的一個頁面的全部地區名稱和連結。
他是剛學習爬蟲的,使用的scrapy框架,我覺得沒有必要使用到這個框架,我們直接用了一個requests+selenium 進行一整頁資料的爬取就可以。
首先爬取的目標網站是:
因為一開始直接用requests庫進行網站的爬取,會訪問不到資料的, 會直接出現 訪問的頁面出現錯誤的資訊。
因為一直報錯,腦瓜子不知道怎麼的就想到了selenium 這個框架,可能是之前的幾個爬蟲專案都是使用的selenium吧。但是做爬蟲的都知道安居客現在也不是很好爬取的,網站的反爬機制總是在不斷的升級,這裡我們只是少量的爬取做分享,那就只需要做最簡單的反爬策略就可以,一般網站最直接的就是封IP。這裡剛也跟大家分享一種新的代理的使用方式即隧道轉發代理,最近有詳細的瞭解了下很適合爬蟲,特別是新手爬蟲。
接下來我們直接在selenium中加上代理去訪問資料,實現程式碼示例如下:
from selenium import webdriver import string import zipfile # 代理伺服器(產品官網 ) proxyHost = "t.16yun.cn" proxyPort = "31111" # 代理驗證資訊 proxyUser = "username" proxyPass = "password" def create_proxy_auth_extension(proxy_host, proxy_port, proxy_username, proxy_password, scheme='http', plugin_path=None): if plugin_path is None: plugin_path = r'D:/{}_{}@t.16yun.zip'.format(proxy_username, proxy_password) manifest_json = """ { "version": "1.0.0", "manifest_version": 2, "name": "16YUN Proxy", "permissions": [ "proxy", "tabs", "unlimitedStorage", "storage", "", "webRequest", "webRequestBlocking" ], "background": { "scripts": ["background.js"] }, "minimum_chrome_version":"22.0.0" } """ background_js = string.Template( """ var config = { mode: "fixed_servers", rules: { singleProxy: { scheme: "${scheme}", host: "${host}", port: parseInt(${port}) }, bypassList: ["foobar.com"] } }; chrome.proxy.settings.set({value: config, scope: "regular"}, function() {}); function callbackFn(details) { return { authCredentials: { username: "${username}", password: "${password}" } }; } chrome.webRequest.onAuthRequired.addListener( callbackFn, {urls: [""]}, ['blocking'] ); """ ).substitute( host=proxy_host, port=proxy_port, username=proxy_username, password=proxy_password, scheme=scheme, ) with zipfile.ZipFile(plugin_path, 'w') as zp: zp.writestr("manifest.json", manifest_json) zp.writestr("background.js", background_js) return plugin_path proxy_auth_plugin_path = create_proxy_auth_extension( proxy_host=proxyHost, proxy_port=proxyPort, proxy_username=proxyUser, proxy_password=proxyPass) option = webdriver.ChromeOptions() option.add_argument("--start-maximized") # 如報錯 chrome-extensions # option.add_argument("--disable-extensions") option.add_extension(proxy_auth_plugin_path) # 關閉webdriver的一些標誌 # option.add_experimental_option('excludeSwitches', ['enable-automation']) driver = webdriver.Chrome(chrome_options=option) # 修改webdriver get屬性 # script = ''' # Object.defineProperty(navigator, 'webdriver', { # get: () => undefined # }) # ''' # driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": script}) driver.get(")
獲取的資料經過後期整理我直接私發那個小夥伴了,關於selenium 的使用還是比較複雜,下次小編專門針對selenium的使用寫一篇文章,感興趣的可以關注下,對代理的選擇有需求的可以直接搜尋億牛雲去了解,是專業提供爬蟲代理的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31522063/viewspace-2933451/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python爬蟲實踐--爬取網易雲音樂Python爬蟲
- 爬蟲實踐-基於Jsoup爬取Facebook群組成員資訊爬蟲JS
- python爬蟲實踐: 豆瓣小組命令列客戶端Python爬蟲命令列客戶端
- 安居客 Android APP 走向平臺化AndroidAPP
- 客戶端爬取-答網友問客戶端
- 爬蟲(三)-客戶端爬取Android SDK釋出爬蟲客戶端Android
- 爬蟲實踐之獲取網易雲評論資料資訊爬蟲
- 安居客Android專案架構演進Android架構
- 安居客 QA 的技術轉型之路 - 卞偉
- Python《爬蟲初實踐》Python爬蟲
- 快取&PWA實踐快取
- nuxt快取實踐UX快取
- okhttp 快取實踐HTTP快取
- 圖片爬取實戰一
- 爬蟲實戰——58同城租房資料爬取爬蟲
- Python實現微博爬蟲,爬取新浪微博Python爬蟲
- 爬蟲——爬取貴陽房價(Python實現)爬蟲Python
- 58同城&安居客:2019年樓市總結
- 安居客:2019年職場女性就業調查就業
- Python爬蟲實戰:爬取淘寶的商品資訊Python爬蟲
- 爬蟲實戰(一):爬取微博使用者資訊爬蟲
- 安居客面試題:純css實現未知比例圖片自適應且水平垂直居中面試題CSS
- 實踐篇 -- Redis客戶端快取在SpringBoot應用的探究Redis客戶端快取Spring Boot
- scrapy-redis實現爬蟲分散式爬取分析與實現Redis爬蟲分散式
- 前端快取最佳實踐前端快取
- Python爬蟲實戰詳解:爬取圖片之家Python爬蟲
- Python3.X 爬蟲實戰(併發爬取)Python爬蟲
- 58安居客:探祕新時代乘風破浪姐姐置業指南
- 獲取客戶端真實IP客戶端
- Python實時爬取鬥魚彈幕Python
- webpack 持久化快取實踐Web持久化快取
- Python爬蟲實戰案例-爬取幣世界標紅快訊Python爬蟲
- Python爬蟲-用Scrapy框架實現漫畫的爬取Python爬蟲框架
- 58安居客:2021年住房租賃市場分析與展望
- 用typescript開發爬蟲過程實踐TypeScript爬蟲
- Disruptor 實踐:整合到現有的爬蟲框架爬蟲框架
- Python爬蟲實踐-網易雲音樂Python爬蟲
- python爬蟲的最佳實踐(六)--爬蟲中的多程式Python爬蟲