iT邦幫忙

2022 iThome 鐵人賽

DAY 30
0
Software Development

爬蟲基礎入門與實際應用系列 第 30

DAY30、專題三 : yt搜尋機器人 (4)

  • 分享至 

  • xImage
  •  

今天我們就要正式來講影片篩選來結尾了。
https://ithelp.ithome.com.tw/upload/images/20221015/20152706xEdfvSWj2N.png
接續昨天的部分,篩選器的部分其實就是這個,
https://ithelp.ithome.com.tw/upload/images/20221015/20152706q0RC9hMzgT.png
那麼這邊一樣使用昨天的方式,利用xpath定位後點擊,順利的話就會進到搜尋結果頁面了。
緊接著就是影片整理了,
https://ithelp.ithome.com.tw/upload/images/20221015/201527065vZdueeccE.png
我們如果對著影片標題那邊定位,可以看到這一個節點裡有著影片標題跟影片連結的資訊,
因此我們主要的影片標題比對跟連結都會從這一個位置抓取,則一樣使用xpath定位,這樣我們就可以得到
單一影片的資訊了,接著的問題就是如何跳到下一部影片。
那麼事實上,我們把剛才的同一個full xpath抓出來看一下:
/html/body/ytd-app/div[1]/ytd-page-manager/ytd-search/div[1]/ytd-two-column-search-results-renderer/div/ytd-section-list-renderer/div[2]/ytd-item-section-renderer/div[3]/ytd-video-renderer[1]/div[1]/div/div[1]/div/h3/a/yt-formatted-string
再把下一部影片的也抓出來比對:
/html/body/ytd-app/div[1]/ytd-page-manager/ytd-search/div[1]/ytd-two-column-search-results-renderer/div/ytd-section-list-renderer/div[2]/ytd-item-section-renderer/div[3]/ytd-video-renderer[2]/div[1]/div/div[1]/div/h3/a
可以發現到在ytd-video-renderer的部分變了,實際上,這個指的就是搜尋結果的第幾個影片,
那麼經過嘗試跟比對後,發現yt的影片更新是以20個做為單位,
意即每20個影片ytd-item-section-renderer就會從[1]變為[2],那麼這裡我們就取前20部影片就好,
https://ithelp.ithome.com.tw/upload/images/20221015/20152706LjWEm9JAuY.png
那麼這裡,我們的主要流程是利用py的f字串,直接對xpath進行操作,改變裡面的數字來選定當前的影片,
利用xpath找到元素後,可以利用selenium的功能,get_attribute來取得屬性的資訊,
則就能利用這一個來幫我們解決所有的問題。接著下面就是重複影片的判斷了,就不再多加贅述。
整理完一個關鍵字的影片,別忘記我們還有其他的搜尋關鍵字,所以要清除搜尋欄,在繼續下一次的搜尋。
https://ithelp.ithome.com.tw/upload/images/20221015/20152706vhymsVuwMy.png
主要的部分就這樣結束了,整理完所有影片後,我們就可以讓機器人到該文字頻道發出影片,
這邊建議是獨立一個頻道出來使用,不然大家都要被機器人洗版。

那麼專題三就這裡了,其實整體的想法架構並不難,主要是一開始到底想要用甚麼方法、甚麼工具較為麻煩,
還有實際對網頁的操作會出現許多狀況,也必須考量進去。

今天就到這裡,看起來應該也就是這個系列的最後一篇了。


上一篇
DAY29、專題三 : yt搜尋機器人 (3)
系列文
爬蟲基礎入門與實際應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言