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爬蟲
- python爬蟲實踐: 豆瓣小組命令列客戶端Python爬蟲命令列客戶端
- 爬蟲實踐-基於Jsoup爬取Facebook群組成員資訊爬蟲JS
- Python網路爬蟲實踐案例:爬取貓眼電影Top100Python爬蟲
- 58安居客:2020年10月國民安居指數
- 58安居客:2021年8月國民安居指數
- 客戶端爬取-答網友問客戶端
- 安居客:2022年6月國民安居指數報告
- 58安居客:2019年7月國民安居指數報告
- 58安居客:2020年8月國民安居指數報告
- Python《爬蟲初實踐》Python爬蟲
- 安居客 Android APP 走向平臺化AndroidAPP
- 58同城&安居客:2023年2月國民安居指數報告
- 58同城&安居客:2023年3月國民安居指數報告
- 實踐篇 -- Redis客戶端快取在SpringBoot應用的探究Redis客戶端快取Spring Boot
- 爬蟲實踐之獲取網易雲評論資料資訊爬蟲
- okhttp 快取實踐HTTP快取
- nuxt快取實踐UX快取
- 快取&PWA實踐快取
- 58同城&安居客:2020年城市人才安居吸引力報告(附下載)
- 58安居客:2021年10月國民安居指數家居市場報告
- 爬蟲實戰——58同城租房資料爬取爬蟲
- 爬蟲——爬取貴陽房價(Python實現)爬蟲Python
- 58同城&安居客:2020粵港澳大灣區三季度理想安居指數
- 58同城&安居客:2019年樓市總結
- 58安居客:2021婚房置業報告
- Python爬蟲實戰詳解:爬取圖片之家Python爬蟲
- Python實現微博爬蟲,爬取新浪微博Python爬蟲
- 前端快取最佳實踐前端快取
- Python爬蟲實戰:爬取淘寶的商品資訊Python爬蟲
- 安居客 QA 的技術轉型之路 - 卞偉
- 安居客:2019年職場女性就業調查就業
- 獲取客戶端真實IP客戶端
- Python實時爬取鬥魚彈幕Python
- python爬蟲實戰:爬取西刺代理的代理ip(二)Python爬蟲
- 爬蟲實戰(一):爬取微博使用者資訊爬蟲
- Python爬蟲實戰案例-爬取幣世界標紅快訊Python爬蟲
- 58安居客:2020年女性置業報告