05 Python 爬蟲教學10 所有文章

【爬蟲筆記】Python Selenium Webdriver異常問題集

python_selenium_error

在開發 Python Selenium 爬蟲遇到了不少坑,花了很多時間找問題和解決方法,所以記錄一下,希望遇到相同問題的人有幫助

Python Selenium Webdriver 異常記錄

發生 selenium.common.exceptions.TimeoutException 問題:

可以在 driver 這邊設定 timeout 超時時間

driver.set_page_load_timeout(110)
try:
"do something"

except TimeoutException as e:
driver.close()
driver.quit()
time.sleep(10)
break

 發生 ConnectionResetError: [Errno 104] Connection reset by peer 問題:

try:
"do something"

except ConnectionResetError as e:
driver.close()
driver.quit()
time.sleep(10)
break

發生 NameError: name ‘NoSuchElementException’ is not defined 問題:

try:
"do something"

except NoSuchElementException as e:
driver.close()
driver.quit()
time.sleep(10)
break

如何清除殭屍線程

import os

os.system('pkill chrome')
os.system("kill $(ps aux | grep webdriver| awk '{print $2}')")
  • ps 是拿到所有到 processes
  • grep 是篩選出 webdriver
  • awk 是拿到PID
  • kill 是殺掉所有列出的PID
關於清除殭屍線程,我通常是在爬完100次頁面後,會固定清除一次如下:
num=100

for i in range(int(len(df)/num)):

indices = rand_ind[num*i : num*i + num]
sub_df[i] = df.iloc[indices]
url_list = sub_df[i]['網址'].tolist()

# 清除殭屍線程
os.system("kill $(ps aux | grep webdriver| awk '{print $2}')")
# 開始線程
treadline(url_list)

2019/12/23補充:

爬取高鐵票券問題:

最近朋友問說在學習爬取高鐵票券系統時,已經有帶 User agent 為何還是會被判定為權限不足,最後發現 Chrome 在最新版本會在瀏覽器頂部顯示 ” Chrome正在由自動軟體測試控制”,目前的解法是加上'excludeSwitches'的選項。

options.add_experimental_option('excludeSwitches', ['enable-automation']) 

關於更多 selenium 參數可以參考這篇:selenium启动Chrome配置参数问题

2020/02/14補充:

Selenium 不開啟瀏覽器模式,爬取資料失敗

最近有朋友問說使用 selenium 爬蟲正常可以抓到 50 筆資料,但加上 options.add_argument(“–headless”) 不開啟瀏覽器的無頭模式就只剩 3筆資料。

原因很簡單,因為他有使用到 scroll_height 讓視窗滾動的部分,而他設定的視窗大小是 driver.maximize_window() 視窗最大化

這時候只需要將修改瀏覽器大小 window-size=1920,1080 設定,即可正常運行

options = Options()
options.add_argument("--headless") # 不要開啟瀏覽器
options.add_argument("window-size=1920,1080") # 設定瀏覽器大小
driver = webdriver.Chrome('./chromedriver',options=options)

最後~

▍關於 Selenium 相關其他文章,可以參考:

▍關於與 Concurrency Programming 相關其他文章,可以參考:

▍關於 Async IO 相關其他文章,可以參考:

那麼有關於【爬蟲筆記】Python Selenium Webdriver 異常問題集 的介紹就到這邊告一個段落囉!有任何問題可以在以下留言~

有關 Max行銷誌的最新文章,都會發佈在 Max 的 Facebook 粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!

在《【爬蟲筆記】Python Selenium Webdriver異常問題集》中有 1 則留言

  1. 你好,關於python這問題,我很好奇,為什麼
    為什麼selenium要用from selenium import webdriver 不能使用import selenium就好?
    webdriver 不是selenium的一部分?
    我始終搞不太懂from import和import的差別,原本以為搞懂了,看到selenium又不懂了……

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *