iT邦幫忙

2023 iThome 鐵人賽

DAY 13
1
自我挑戰組

待業不頹廢系列 第 13

Day 13 . 欸 今天要幹嘛 - 跟著做 寫出python 動態爬蟲

  • 分享至 

  • xImage
  •  

行前提要

當我嘗試跟著網上大大,還是遇到一些狀況 ( 別人的一小步是我的一大步啊OAQ
文章點我🤸
昨天結尾起手式的 code 就不佔版面空間貼過來,直接進行改寫。
整篇文章會以"跟著做"來記錄,並發現問題、處理方式。
以 google 首頁為例
來搜索關鍵字「 Selenium Python 」

python 動態爬蟲實作

from selenium import webdriver

# 初始化Chrome WebDriver
driver = webdriver.Chrome()

#打開網頁:使用get方法打開你要爬取的網頁。
driver.get("https://www.google.com/")

#進行操作:定位搜尋框

element = driver.find_element_by_name("q")
element = driver.find_element_by_class_name("gLFyf")

#傳入字串
element.send_keys("Selenium Python")

#清理和關閉:在完成操作後,確保關閉Chrome瀏覽器,以釋放資源。
driver.quit()

看效果就在終端機下指令執行 $ python3 檔名.py
例如:python3 sss.py

於是我遇到 AttributeError
在前幾篇已插播,今天不多談,繼續往下進行
(當初沒庫存,只好先抓原訂後面的文章墊一下)

💥後來發現!有可能不是寫的問題,也許是當初版本匹配的問題,下載 driver 的部分
在 Day 11 重新走過一次,並在 2.瀏覽器版本確認 時發現問題,
跟著做還能錯(抱頭
這篇繼續進行改寫 code 的方式,
之後再回頭處理版本下載問題,看看是不是真的不用改寫 code

可以用這樣的方式來解套
新增句法from selenium.webdriver.common.by import By(下方第二行)
還有 by 也需要搬家一下

from selenium import webdriver
from selenium.webdriver.common.by import By
(...略且不變)

#element = driver.find_element_by_name("q") 
#element = driver.find_element_by_class_name("gLFyf")
element = driver.find_element(By.NAME, "q")
element = driver.find_element(By.CLASS_NAME,"gLFyf")

driver.find_element_by 這樣寫法不認同
在新增語法後,下方的參數寫法也需要更改
把這個 by 什麼搬進去括弧裡,就順利完成啦!
看看效果吧 執行 $ python3 檔名.py
這效果很...第一次嘗試我很喜歡好讚 XD
自動測試軟體控制中
https://ithelp.ithome.com.tw/upload/images/20230929/20150181RQebhYR2ZZ.png

咦!不對啊,他只有打開?但我有請他 輸入關鍵字 "Selenium Python" 什麼的
到底是速度太快,還是又錯了呢?先讓他睡三秒看看
time.sleep(3) 前面我們有提過時間的應用,在第六天有提到 "增添延遲時間效果 import time"
原來是速度太快~稍微有點信心了
https://ithelp.ithome.com.tw/upload/images/20230929/20150181Xdc3WW7HzE.png


上一篇
Day 12 . 欸 今天要幹嘛 - python 動態爬蟲(下)
下一篇
Day 14 . 欸 今天要幹嘛 - 繼續做 寫出python 動態爬蟲
系列文
待業不頹廢30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
arguskao
iT邦新手 3 級 ‧ 2023-10-09 23:03:00

element = driver.find_element(By.NAME, "q")
element = driver.find_element(By.CLASS_NAME,"gLFyf")

這裡看不懂,為何是先找Name,再找class_name?

我看google那段應該是

我要留言

立即登入留言