[英]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.