iT邦幫忙

0

爬蟲 Chrome自動關閉問題

YC 2022-05-13 13:22:545806 瀏覽
  • 分享至 

  • xImage

各位大大好,我這幾天才剛接觸爬蟲,都是在網路上找資料自學的,卡了很多地方最後都能解決,唯獨執行全部程式碼後Chrome會自動關閉問題(剛開始用前幾次不會,之後不管做什麼事都會自動關閉)一直不能解決,請問各位大大可能是們麼原因?先謝謝各位大大了!

以下附上版本號:
Chrome : 101.0.4951.67 (正式版本) (64 位元)
ChromeDriver : 101.0.4951.41

以下附上我的程式碼(在IG用關鍵字下載圖片):

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

import time

import os
import wget





path = "D:/chromedriver.exe"
driver = webdriver.Chrome(path)


driver.get("https://www.instagram.com/")
print(driver.title)




#會等瀏覽器10秒鐘,直到XXX(By後的條件)可以被點擊為止
username = WebDriverWait(driver, 10).until(    
    EC.element_to_be_clickable((By.CLASS_NAME, "KPnG0"))
)


#---------------------------------------用FB登入-------------------------------------------------
login = driver.find_element(by=By.XPATH, value='//*[@id="loginForm"]/div/div[5]/button/span[2]')
login.click()    


#---------------------等帳號欄位可點擊------------------------
username = WebDriverWait(driver, 10).until(    
    EC.element_to_be_clickable((By.ID, "email"))
)

#---------------------等密碼欄位可點擊------------------------
password = WebDriverWait(driver, 10).until(    
    EC.element_to_be_clickable((By.ID, "pass"))
)


login_FB = driver.find_element(by=By.XPATH, value='//*[@id="loginbutton"]')

username.clear()  #清空帳號
password.clear()  #清空密碼
username.send_keys('xxxxx@gmail.com')   #輸入帳號
password.send_keys('xxxxx')   #輸入密碼

login_FB.click()   #點擊登入



#---------------------等搜尋欄位可點擊------------------------
search = WebDriverWait(driver, 10).until(    
    EC.element_to_be_clickable((By.CLASS_NAME, "XTCLo"))
)

keyword = '#cat'

search.send_keys(keyword)   #搜尋cat
time.sleep(1)   #等待1秒
search.send_keys(Keys.RETURN)   #按下enter鍵
time.sleep(1)   #等待1秒
search.send_keys(Keys.RETURN)   #按下enter鍵



time.sleep(5)   #等待5秒(如果不等5秒,執行完第二次search.send_keys(Keys.RETURN)就會閃退,並且下載的圖片是搜尋cat結果之前的頁面的圖)


#---------------------等圖片可點擊------------------------
WebDriverWait(driver, 10).until(    
    EC.presence_of_element_located((By.CLASS_NAME, "FFVAD"))
)


#滾軸下拉5次
for i in range(5):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(5)


imgs = driver.find_elements(by=By.CLASS_NAME, value="FFVAD")




path = os.path.join(keyword)
os.mkdir(path)   #建資料夾



#下載圖片
count = 0
for img in imgs:
    save_as = os.path.join(path, keyword + str(count) + '.jpg')
    wget.download(img.get_attribute("src"), save_as)
    count += 1

終端機訊息 :

PS D:\xampp\htdocs\website_test> & D:/ProgramData/Anaconda3/python.exe d:/xampp/htdocs/website_test/py_test2.py
d:\xampp\htdocs\website_test\py_test2.py:24: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
  driver = webdriver.Chrome(path)

DevTools listening on ws://127.0.0.1:62490/devtools/browser/1fada151-04b0-48e8-879a-7af83530ff04
Instagram
[6864:22832:0513/132954.606:ERROR:device_event_log_impl.cc(214)] [13:29:54.606] USB: usb_device_handle_win.cc:1049 Failed to read descriptor from node connection: 連結到系統的某個裝置
失去作用。 (0x1F)
[6864:22832:0513/132954.609:ERROR:device_event_log_impl.cc(214)] [13:29:54.609] USB: usb_device_handle_win.cc:1049 Failed to read descriptor from node connection: 連結到系統的某個裝置
失去作用。 (0x1F)
100% [..............................................................................] 62177 / 62177

如果還缺什麼資料麻煩大大告知,萬分感謝!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
echochio
iT邦高手 1 級 ‧ 2022-05-13 14:48:57

那個 webdriver 在程式最後有關閉嗎?

https://www.zyxware.com/articles/5552/what-is-close-and-quit-commands-in-selenium-webdriver

當開啟後沒關閉
多開幾個後會閃退

還是 砍了也行 :)

os.system('taskkill /im chromedriver.exe /F')
os.system('taskkill /im chrome.exe /F')
YC iT邦新手 5 級 ‧ 2022-05-13 14:53:32 檢舉

感謝echochio大大回應,我一開始有用driver.quit()關閉,但是後來異常閃退之後我就先註解了,應該說不是閃退,是自動關閉,所以不會有開多個Chrome的問題

echochio iT邦高手 1 級 ‧ 2022-05-14 09:20:28 檢舉

重開治百病
重灌治百病
如果不是程式或許問題換一台電腦試試
我習慣用VM跑

YC iT邦新手 5 級 ‧ 2022-05-16 10:32:16 檢舉

謝謝echochio大大!我在其他電腦上載ChromeDriver後跑程式,結果一樣執行完自動關閉,可能第一台電腦一開始沒自動關閉才是不正常的.../images/emoticon/emoticon10.gif

0
熊熊工程師
iT邦研究生 2 級 ‧ 2022-05-16 09:01:09

就個人經驗來講 wedriver 在事情做完或是遇到程式碼錯誤 or 連線錯誤的時候會自動關閉,quit() 只是用來 確保他有關閉,或許你可以每一行都單獨執行看看,看有沒有其他錯誤

YC iT邦新手 5 級 ‧ 2022-05-16 10:38:38 檢舉

感謝熊熊工程師大大回應,我試著只留開啟網頁那行,一樣會自動關閉,剛載完ChromeDriver的時候也有測試開網頁,但是不會自動關閉,所以在想是不是有哪裡動到了

YC iT邦新手 5 級 ‧ 2022-05-16 11:34:59 檢舉

後來發現一開始沒自動關閉好像才是不正常的,謝謝熊熊工程師大大!!

marryjanes
iT邦見習生 ‧ 2022-05-16 10:34:38
【**此則訊息已被站方移除**】

我要發表回答

立即登入回答