簡體   English   中英

Selenium Webdriver不執行JavaScript

[英]Selenium Webdriver not executing JavaScript

我正在嘗試從Aliexpress產品頁面抓取數據。 例。

我需要這個部分。 (交易記錄)

我的代碼:

from selenium.webdriver.chrome.options import Options
from selenium import webdriver
my_url = 'https://www.aliexpress.com/item/Cosmetic-Brush-Makeup-Blusher-Eye-Shadow-Kabuki-Brushes-Set-Tool-Kit-22pcs/32765190537.html?ws_ab_test=searchweb0_0'
chrome_options = Options()  
chrome_options.add_argument("--enable-javascript")
driver = webdriver.Chrome(chrome_options=chrome_options)  
driver.get(my_url)
innerHTML = driver.execute_script('return document.getElementsByTagName("html")[0].innerHTML')
page_html = driver.page_source

當我跑步

document.getElementsByTagName(“ html”)[0] .innerHTML

在chrome控制台上,我得到了包括所需部分在內的整個html。 但是,據我所知此部分不在iFrame下,innerHTML對象為我提供了與driver.page_source相同的html(沒有我需要的部分)。

請提供一些幫助:-)

您可能要查找此特定表。 使用

innerHTML = document.querySelectorAll('table.transaction-feedback-table');

在此處輸入圖片說明

可能會找到它

在可見元素ID j-transaction-feedback后,將生成j-transaction-feedback ,您必須滾動到該元素並等待Ajax請求完成。

from selenium.webdriver.support.ui import WebDriverWait

....
....
driver.get(my_url)

# scroll to the element
driver.find_element_by_css_selector('#j-transaction-feedback').location_once_scrolled_into_view

# wait until Ajax finished and render the element
transaction = WebDriverWait(driver, 15).until(
    lambda d: d.find_element_by_css_selector('.transaction-feedback-content')
)
total_transaction = driver.find_element_by_css_selector('#j-transaction-feedback .text')
page_source = driver.page_source

print('total_transaction: ' + total_transaction.text)

暫無
暫無

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

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