如何从selenium page_source获取内容类型

问题描述 投票:0回答:2

我知道内容类型可以从

获取
response = urllib2.urlopen(url)
content-type = response.info().getheader('Content-type')

现在,我需要执行js代码,所以我选择selenium和Phantomjs来获取网页。

driver = webdriver.PhantomJS()
driver.get(url)
source = driver.page_source

如何在不下载网页两次的情况下从源获取内容类型?我知道我可以将response.read()保存为html文件,然后驱动程序渲染本地html文件而无需再次下载。然而,这太慢了。有什么建议吗?

python selenium phantomjs content-type
2个回答
3
投票

Selenium 无法获取标头,但您可以通过请求来请求标头:

import  requests

print(requests.head(url).headers["Content-Type"])

您可以使用httplib2、urlliib2等。这里有很多答案展示了如何使用各种库请求头。


0
投票

要使用 Selenium 检查内容类型,您可以使用以下方法:

使用 Selenium 访问页面。 使用execute_script 方法创建XMLHttpRequest (XHR) 或使用浏览器的内置函数来检索标头。 这是一个简单的例子:

    from selenium import webdriver
    
    # Initialize the WebDriver
    driver = webdriver.Chrome()
    
    # Open the target URL
    driver.get("https://example.com")
    
    # Execute JavaScript to fetch the Content-Type header
    content_type = driver.execute_script("""
        var xhr = new XMLHttpRequest();
        xhr.open('HEAD', window.location.href, false);
        xhr.send(null);
        return xhr.getResponseHeader('Content-Type');
    """)
    
    print(f"Content-Type: {content_type}")
    
    # Close the WebDriver
    driver.quit()

此脚本获取并打印当前加载页面的内容类型。

© www.soinside.com 2019 - 2024. All rights reserved.