簡體   English   中英

Selenium 如何在網站分頁依賴 Javascript 時抓取網站表格?

[英]Selenium How to scrape website table when website pagination relies on Javascript?

我對網頁抓取很陌生,到目前為止,我只遇到過在他們的下一個按鈕中有分頁鏈接的抓取網站。 但是當我點擊下一個按鈕時,我遇到了網站分頁按鈕鏈接沒有改變的情況。

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("https://www.nepalstock.com.np/floor-sheet?fbclid=IwAR0-V615fp0ujUH8BRr3Zu4erfAtsCz0-RHUgjMIvhjpGsaya-S9v7xI_-8")

但是這個網站在加載下一個按鈕時不會改變鏈接。 我可以做些什么來獲取這些分頁表數據?

Ps:上面的網站右鍵是禁用的(我用ctrl+shift+c)來啟用它

我剛剛為上述網站嘗試了下面提到的java代碼,我可以點擊下一步按鈕,也可以獲取數據。

driver.get("https://www.nepalstock.com.np/floor-sheet?fbclid=IwAR0-V615fp0ujUH8BRr3Zu4erfAtsCz0-RHUgjMIvhjpGsaya-S9v7xI_-8");
 
int rowSize=driver.findElements(By.xpath("//tbody//tr")).size();
int pageSize=Integer.parseInt(driver.findElement(By.xpath("//li[@class='ellipsis']/following-sibling::li//span[@class='show-for-sr']/following-sibling::span")).getText());
for(int page=1;page<pageSize;page++)
{

for (int i=1;i<rowSize;i++)
{
    
    for(int col=1;col<=8;col++)
    {
    System.out.print(driver.findElement(By.xpath("//tbody//tr["+i+"]/td["+col+"]")).getText()+" | ");
    }
    System.out.println();
    }
driver.findElement(By.xpath("//li[@class='pagination-next']")).click();
}

Python 代碼片段。 我測試了它並且它正在工作

from selenium import webdriver
from selenium.webdriver.common.by import By

if __name__ == '__main__':
    driver = webdriver.Chrome('/Users/username/node_modules/chromedriver/lib/chromedriver/chromedriver')  # Optional argument, if not specified will search path.
    driver.maximize_window()
    driver.implicitly_wait(15)
    
    driver.get("https://www.nepalstock.com.np/floor-sheet?fbclid=IwAR0-V615fp0ujUH8BRr3Zu4erfAtsCz0-RHUgjMIvhjpGsaya-S9v7xI_-8");
    
    #finds all the comments or profile pics
    rowSize= driver.find_elements(By.XPATH,"//tbody//tr")
    pageSize=int (driver.find_element(By.XPATH,"//li[@class='ellipsis']/following-sibling::li//span[@class='show-for-sr']/following-sibling::span").text);

    for page in range(1,pageSize):
        for i in range(1,len(rowSize)):
            for col in range(1,8):
                print(driver.find_element(By.XPATH,"//tbody//tr["+str(i)+"]/td["+str(col)+"]").text+" | ")
            
        driver.find_element(By.XPATH,"//li[@class='pagination-next']").click();
    driver.quit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM