簡體   English   中英

從 HTML 頁面 python 獲取完整數據

[英]Get full data from HTML page python

我正在嘗試下載數千個 HTML 頁面以解析它們。 我用 selenium 進行了嘗試,但下載的文件不包含瀏覽器中看到的所有文本。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager    

chrome_options = Options()
chrome_options.add_argument("--headless")
browser = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)

for url in URL_list:
        browser.get(url)
        content = browser.page_source
        with open(DOWNLOAD_PATH + file_name + ".html", "w", encoding='utf-8') as file:
            file.write(str(content))
browser.close()

但是我得到的 html 文件不包含我在同一頁面的瀏覽器中看到的所有內容。 例如,我在屏幕上看到的文本在 HTML 文件中找不到。 只有當我右鍵單擊瀏覽器中的頁面並“另存為”時,我才能獲得整個頁面。

URL 示例 - https://www.camoni.co.il/411788/1Jacob

謝謝你

請注意,在無頭模式下使用 webdriver 可能不會提供相同的結果。 為了快速解決問題,我建議在不使用 --headless 選項的情況下抓取頁面源。

另一種方法可能是等待某些元素被定位。

我建議繞過預期條件並等待該示例。

這是我為您更好地理解而准備的function:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
    

def awaitCertainElements_andGetSource():
    element_one = driver.find_element(By.XPATH, "//*[text() = 'some text that is crucial for you'")
    element_two = driver.find_element(By.XPATH, "//*[@id='some-id'")
    wait = WebDriverWait(driver, 5)
    wait.until(EC.visibility_of(element_one))
    wait.until(EC.visibility_of(element_two))
    
    return driver.get_source
    

暫無
暫無

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

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