【问题标题】:Python selenium wont print entire pagePython selenium 不会打印整个页面
【发布时间】:2020-05-17 09:14:46
【问题描述】:

我正在尝试从网页中获取 html 代码,但我只获得了显示页面的 1/4。

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.hltv.org/matches")

print(driver.page_source)

感觉好像我已经尝试了所有方法,但仍然得到相同的结果。它不是从顶部开始的。它从很远的地方开始,几乎在结尾。

有人知道吗?

【问题讨论】:

标签: python selenium selenium-webdriver


【解决方案1】:

试试下面的代码。这对我有用

from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.hltv.org/matches")
file = open("asd.html", "a", encoding='utf8')
file.write(driver.page_source)
file.close()

【讨论】:

    【解决方案2】:

    这可能是因为在打印时您的 get 尚未完成加载页面。

    要解决此问题,您可以尝试在打印之前等待加载已知元素。

    要等待一个元素(下例中的“backToLoginDialog”)加载,请将您的代码调整为如下所示:

    from selenium.webdriver.support import expected_conditions as EC
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    
    # set up driver and page load timeout
    driver = webdriver.Chrome()
    timeout = 5
    
    # create your "wait" function
    def wait_for_load(element_id):
        element_present = EC.presence_of_element_located((By.ID, element_id))
        WebDriverWait(driver, timeout).until(element_present)
    
    driver.get('https://www.hltv.org/matches')
    wait_for_load('backToLoginDialog')
    print(driver.page_source)
    

    【讨论】:

    • 没有让它工作。我不是专家,所以这段代码可能有效,但有一些错误。还是谢谢。
    • 我在以前的版本中进行了编辑(忘记包含 WebDriverWait )。这在我的系统上运行良好,直接从这篇文章复制和粘贴 - 我还在页面本身上找到了“backToLoginDialog”来测试负载。看起来你无论如何都有解决方案:)
    猜你喜欢
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 2016-03-16
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多