爬蟲問題總結

2022-09-10 12:42:18 字數 1955 閱讀 6585

使用selenium + webdriver

配置chromedriver

配置環境變數,路徑為放置檔案的路徑

爬取具體過程

首先輸入要獲取頁面的**,一般沒有登陸過會自動跳轉到登陸頁面,此時對登陸頁面進行解析,獲得輸入賬號密碼驗證碼的位置,此處賬號密碼設定到程式中自動輸入,驗證碼由自己輸入。

然後登入到頁面後,發現用requests不能成功請求跳轉頁面,每次都是獲取到登入頁面,我覺得是因為requests又要請求一次連線,被認定為第二次連線了,所以在這裡我們不採用requests,我們繼續採用webdriver

driver.page_source         #這個就可以獲取到頁面**
附上原始碼:

def loginsys():

print('開始登陸')

vcode = input("vcode:") # 請求驗證碼,人工識別後輸入

time.sleep(0.2) # 停頓模擬真實操作情況,降低被**發現的機率

time.sleep(0.2)

driver.implicitly_wait(0.2)

driver.find_element_by_id('login_btn').click() # 點選登入

這裡我們使用beautifulsoup,這裡的html就是上面的driver.page_source ,然後利用.find .find_all 等方法來抓取所需要的內容

soup = beautifulsoup(html, 'html.parser')             # 從網頁抓取資料
driver.find_element_by_xpath('//*[@id="information"]/div[3]/div/button[2]').click()
但是我們發現不定時會報錯:

selenium.common.exceptions.elementclickinterceptedexception: message: element click intercepted: element ... is not clickable at point (1066, 547). other element would receive the click:

...(session info: chrome=95.0.4638.69)

經過蒐集資料可以使用另乙個呼叫 click 事件的方法代替 click() 方法:

element1 = driver.find_element_by_xpath('//*[@id="information"]/div[3]/div/button[2]')

driver.execute_script("arguments[0].click();", element1)

編寫爬蟲遇到的問題總結

1,編碼問題 設定檔案編碼格式utf 8 2.連線超時 異常或者設定timeout 沒有設定timeout引數,結果在網路環境不好的情況下,時常出現read 方法沒有任何反應的問題,程式卡死在read 方法裡,搞了大半天,才找到問題,給urlopen加上timeout就ok了,設定了timeout之...

簡單爬蟲總結

url url主要有三部分組成 1 協議,常見的協議有http,https,ftp,file 訪問本地資料夾 ed2k 電驢的專用鏈結 等等。2 存放資源的伺服器的網域名稱系統 dns 主機名或者ip位址 有時候包含埠號,各種傳輸協議都有預設的埠號 3 主機資源的具體位址,如目錄和檔名等 注意 第一...

爬蟲總結(一)

requests模組 response urllib2.urlopen 讀取html原始碼使用read方法 html response.read 1.構造request物件 get請求 url 這種request是get請求,因為沒有給data傳值,如果需要使用get方式傳參,可以把引數經過urll...