iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0

繼昨天完成輸入搜尋條件之後點搜尋,可看到目前搜尋出來的工作結果
但是內容有很多,因此需要做網頁下拉的動作滑到最底頁,以便獲取全部的網頁內容
而網頁下拉的javascript語法為:

window.scrollTo(0, document.body.scrollHeight);

https://ithelp.ithome.com.tw/upload/images/20230923/20163056WdFuGKIBIp.png
在這邊可以使用selenium提供的execute_script()此方法來執行javascript語法

但在104的網頁使用此方法做下拉時,還會遇到一個問題:

自動加載只能加載到第15頁,第16頁以後則要去點"手動載入第16頁"的按鈕才會載入內容
https://ithelp.ithome.com.tw/upload/images/20230923/20163056jMzlHXzoBA.png
因此在16頁以後要再另外寫個判斷手動點頁數按鈕的部分,才能繼續將全部資料載完
代碼如下:

        pre_height=0
        new_height=0
        qty=0
        while True:
            time.sleep(1.5)
            driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
            new_height=driver.execute_script("return document.body.scrollHeight")
            if new_height>pre_height:
                qty+=1
                print(f'第{qty}次載入')
                pre_height=driver.execute_script("return document.body.scrollHeight")
            else:
                print('auto loading finished.')
                driver.save_screenshot('auto_last_page.png')
                #104的自動載入只會載到第15頁,第16頁以後要手動點下一頁
                manual=1 # 手動載入的第一頁
                while manual !=0:
                    try:
                        driver.find_element(By.XPATH,f'//button[contains(text(),"第{15+manual}頁")]').click()
                        driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
                        print(f'手動載入第{15+manual}頁')
                        manual+=1
                        time.sleep(3.5)
                    except:
                        manual=0
                        print('到最底啦')
                        driver.save_screenshot('last_page.png')
                
                time.sleep(3)
                soup=BeautifulSoup(driver.page_source,'html.parser')
                job_blocks=soup.select('.js-job-item')
                print(f'共有{len(job_blocks)}筆資料')        
                break

上一篇
104網站爬蟲-測試搜尋條件
下一篇
104 爬蟲-將爬回來的結果存到excel中
系列文
定期推送油價通知到Line上的訊息通知,並使用GitLab CI排程搭配Google Colab16
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言