iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0
自我挑戰組

養爬蟲的人學爬蟲系列 第 19

【Day 19】動態網頁爬蟲-Selenium(2/2)

  • 分享至 

  • xImage
  •  

閒聊
昨天建構好了Selenium的環境跟了解一些基本操作後,今天要來繼續學習更多用法。

Xpath語法
在昨天有介紹過一部分可以搜尋HTML文件的方法,今天介紹另一種Xpath方法。
Xpath全名是XML Path,主要用來查詢HTML、XML文件的所有元素,整個文件是一個數狀結構,使用相對路徑方式搜尋網頁的節點。

find_element_by_xpath()
  • 列出屬性值
    在HTML、XML文件中可以看到完整的元素,元素中可以看到class = ''裡面包裹的就是屬性。
    找到想要列出的屬性時,就可以寫進程式碼中。
n = driver.find_element_by_xpath("路徑[@calss = '屬性']")
  • 圖片路徑
    在爬蟲的時候,如果想要下載圖片,首先要找出圖片的完整路徑。
    圖片的路徑一般在<img>元素內的scr屬性設定,這時候還會需要用到get_attribute()方法。
n1 = driver.find_element_by_xapth("路徑/img")
print(n1.get_attribute('scr'))
  • contains()
    當網站中有多個元素重複時,contains()可以讓我們找到包含某一個字串的元素節點。
contains(text(), '字串')

處理網頁特殊按鍵
Python有提供多個模組,可以在需要捲動網頁或是一些特殊鍵時使用。

#用keys呼叫相關屬性
form selenium.webdriver.commom,keys import Keys
selenium.webdriver.commom.keys
  • 常用屬性內容
#相當於鍵盤的按鍵
ENTER/ RETURN
PAGE_DOWN/ PAGE_UP/ HOME/ END
UP / DOWN/ LEFT/ RIGHT

自動化下載資料
今天以環保署空氣品質資料為例,首先進入到環保署空氣品質網站
在這裡按下檢查
https://ithelp.ithome.com.tw/upload/images/20221002/20145359bJW9jsGppz.png

  • JSON
    https://ithelp.ithome.com.tw/upload/images/20221002/20145359ADW615TRAB.png

  • XML
    https://ithelp.ithome.com.tw/upload/images/20221002/201453596Dcl7tfKyH.png

  • CSV
    https://ithelp.ithome.com.tw/upload/images/20221002/20145359bw3bN8Ee9P.png

看到各自的路徑後,就可以來進行自動化下載資料的動作了。

from selenium import webdriver

url = 'https://data.epa.gov.tw/dataset/detail/AQX_P_01'
driverPath = 'D:\geckodriver\chromedriver.exe' 
driver = webdriver.Chrome(executable_path = driverPath) #網頁下載至瀏覽器
driver.get(url) #發送請求

driver.find_element_by_link_text('JSON').click() #按JSON下載
driver.find_element_by_link_text('XML').click() #按XML下載
driver.find_element_by_link_text('CSV').click() #按CSV下載

結語
今天學習了更多Selenium相關的技術,明天就會帶上實作了!

明天!
【Day 20】帶上工具去Dcard去爬文(實戰Selenium 1/2)

參考資料


上一篇
【Day 18】動態網頁爬蟲-Selenium(1/2)
下一篇
【Day 20】帶上工具去Dcard去爬文(實戰Selenium 1/2)
系列文
養爬蟲的人學爬蟲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
twmeric
iT邦新手 5 級 ‧ 2023-01-06 14:41:00

Teresa,能跟妳聯繫一下嘛?有些事情想請教。 https://wa.me/85251164453 謝謝!

我要留言

立即登入留言