我知道内容类型可以从
获取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文件而无需再次下载。然而,这太慢了。有什么建议吗?
Selenium 无法获取标头,但您可以通过请求来请求标头:
import requests
print(requests.head(url).headers["Content-Type"])
您可以使用httplib2、urlliib2等。这里有很多答案展示了如何使用各种库请求头。
要使用 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()
此脚本获取并打印当前加载页面的内容类型。