呼叫瀏覽器的爬蟲——selenium
分類目錄——爬蟲
在進行網頁爬取時,有些網頁比較難分析,應用的很多動態特性;還有可能會在header中封裝了很多奇奇怪怪的不知道怎麼獲取的資料;這時候可能會想如果能用程式吊起瀏覽器來,自動執行點選,拖動等動作就好了
selenium就是這樣一個工具包
先看一個例子
上面所有的操作都是selenium程式控制執行的,當然,執行遇到了問題,卡在了圖片驗證上,這個之後再說,先看一下上述操作是怎麼完成的
from selenium import webdriver
import time
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(
executable_path=r'D:\Anaconda3\envs\others\Lib\site-packages\selenium\webdriver\chrome\chromedriver.exe',
options=options
)
# driver = webdriver.Firefox()
driver.get(")
driver.find_element_by_link_text("你好,請登入").click() # 就是你在頁面上看到的可點選元素
time.sleep(2) # 限於網路環境需要適當延遲等網頁重新整理頁面
driver.find_element_by_link_text("賬戶登入").click()
driver.find_element_by_name("loginname").send_keys('123456') # 透過檢視原始碼獲得的html元素中的name屬性
driver.find_element_by_name("nloginpwd").send_keys('mimamima')
driver.find_element_by_id("loginsubmit").click() # # 透過檢視原始碼獲得的html元素中的name屬性
time.sleep(5)
selenium安裝
現在很多包的安裝已經很容易了,直接
pip install selenium
即可
初始化一個selenium.webdirver物件
後面所有的操作瀏覽器動作將透過這個物件來完成,主要語法如下
driver = webdriver.Chrome(
executable_path=r'D:\Anaconda3\envs\others\Lib\site-packages\selenium\webdriver\chrome\chromedriver.exe',
options=options
)
其中executable_path需要傳入一個本地的瀏覽器驅動路徑,webdirver物件將透過它來操作瀏覽器,關於谷歌的這個驅動,可以參見https://blog.csdn.net/weixin_43746433/article/details/95237254 這篇部落格進行下載,我測試時並沒有跟我環境對應的64位驅動,我下載了32位的也可用
options是用來設定這個物件的操作屬性的,它應該這麼定義
options = webdriver.ChromeOptions()
# 可以給options新增一些選項
options.add_experimental_option('excludeSwitches', ['enable-automation'])
# 上面這個設定意為以開發者模式啟動瀏覽器
# 一些網站能夠識別selenium並進行針對性拒絕訪問,這裡設定options為開發者模式,防止被網站識別出來使用了Selenium
# 我實際用了幾次(比如在淘寶和CSDN的登入上)已經沒有效果了,應該是反爬機制又升級了
options.add_argument('--headless')
# 不啟動瀏覽器操作(預設會啟動瀏覽器視窗)
注意options的宣告要在webdriver之前
當然,也可以宣告 其他瀏覽器的webdriver物件,such as
# driver = webdriver.Firefox()
這個dirver怎麼用
跳轉到一個網頁
driver.get(")
定位到一個html元素
driver.find_element_by~~~
# or
dirver.find_elements_by~~~
定位到元素後如何操作
such as 鄭州看婦科那個醫院好
driver.find_element_by_link_text("賬戶登入").click() # 找到之後點選
driver.find_element_by_name("loginname").send_keys('123456') # 這是向輸入框裡輸入資料
driver.find_element_by_name("nloginpwd").send_keys('mimamima')
driver.find_element_by_id("loginsubmit").click() # 點選登入按鈕
如果從網頁中獲取多媒體資源
使用bs4.BeautifulSoup可以方便的對網頁進行解析,這裡以獲取頁面內京東的logo為例進行程式說明
background = driver.find_element_by_id('logo').find_element_by_tag_name('img')
url = background.get_property('src') # url被解除安裝了style屬性中
print(url)
r = requests.get(url)
# 這裡透過requests來獲取這張圖片,當然driver也是可以的,但是driver之後當前的dirver處理頁面就變成了這張圖片
# 再找元素就找不到了,轉回來也會比較麻煩
with open('./data/logo.png', 'wb') as f: # 注意檔案處理模式為‘wb’(以二進位制寫入)
f.write(r.content) # r.content獲取r的二進位制形式
這樣圖片就被儲存了下來
順便也獲取一下上面的圖片驗證的那張圖,這張圖費了些周折,京東的這個頁面弄得七轉八繞的,可以在F12分析原始碼的時候透過Ctrl+F搜尋.png來快速定位到這張圖片,而且這樣圖不是直接給了他url,是以base64的形式直接出現在html原始碼中的
src = img.get_attribute('src')
b64 = src.split(',')[-1] # 從src內容中拆解出圖片的base64碼
imgdata = base64.b64decode(b64)
file = open('data/verify.png', 'wb')
file.write(imgdata)
file.close()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2682947/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [python爬蟲] Selenium切換視窗控制程式碼及呼叫Chrome瀏覽器Python爬蟲Chrome瀏覽器
- python爬蟲十三:selenium模擬瀏覽器+chrome+windowsPython爬蟲瀏覽器ChromeWindows
- 只要瀏覽器能瀏覽,我就能爬取——selenium+chrome瀏覽器Chrome
- python selenium爬蟲 不開啟網頁 不開啟瀏覽器Python爬蟲網頁瀏覽器
- 對於反爬蟲偽裝瀏覽器進行爬蟲爬蟲瀏覽器
- Selenium爬蟲實踐(踩坑記錄)之ajax請求抓包、瀏覽器退出爬蟲瀏覽器
- 爬蟲-selenium的使用爬蟲
- 分享個自己Python爬蟲時的瀏覽器標識庫Python爬蟲瀏覽器
- Selenium webdirver Java 操作瀏覽器WebJava瀏覽器
- 使用Selenium時的瀏覽器設定瀏覽器
- Python爬蟲之路-selenium在爬蟲中的使用Python爬蟲
- Java Selenium WebDriver 控制瀏覽器(三)JavaWeb瀏覽器
- 瀏覽器配置selenium+python瀏覽器Python
- selenium 啟動 chrome 瀏覽器非常慢。Chrome瀏覽器
- Python爬蟲教程-10-UserAgent和常見瀏覽器UA值Python爬蟲瀏覽器
- js 呼叫瀏覽器複製功能JS瀏覽器
- python3 selenium之火狐Firefox瀏覽器載入瀏覽器配置PythonFirefox瀏覽器
- selenium爬蟲學習1爬蟲
- 為爬蟲獲取登入cookies: 使用browsercookie從瀏覽器獲取cookies爬蟲Cookie瀏覽器
- Selenium實戰教程系列(一)--- 瀏覽器操作瀏覽器
- python用selenium開啟瀏覽器後瀏覽器關閉---解決辦法Python瀏覽器
- 運用phantomjs無頭瀏覽器破解四種反爬蟲技術JS瀏覽器爬蟲
- Selenium常用操作——關閉頁面和瀏覽器瀏覽器
- Selenium系列教程-08 瀏覽器本身行為控制瀏覽器行為控制
- selenium中瀏覽器及對應的驅動(可下載)瀏覽器
- Selenium Webdriver重新使用已開啟的瀏覽器例項Web瀏覽器
- 『心善淵』Selenium3.0基礎 — 18、使用Selenium操作瀏覽器的彈窗瀏覽器
- 瀏覽器呼叫介面正常,jmeter調不通的可能原因瀏覽器JMeter
- 使用瀏覽器位址列呼叫CXF Webservice的寫法瀏覽器Web
- Selenium IDE使用指南:爬蟲指令碼錄製器IDE爬蟲指令碼
- Python爬蟲基礎之seleniumPython爬蟲
- Python爬蟲之Selenium庫的基本使用Python爬蟲
- Python爬蟲學習(9):Selenium的使用Python爬蟲
- 測試案例,Python +Selenium啟動不同瀏覽器Python瀏覽器
- 【0基礎學爬蟲】爬蟲基礎之自動化工具 Selenium 的使用爬蟲
- Selenium Headless模式:無頭瀏覽器的使用與優勢模式瀏覽器
- 瀏覽器呼叫攝像頭進行拍照程式瀏覽器
- 【瀏覽器】瀏覽器基本工作原理瀏覽器