gpt4 book ai didi

python - Requests.get() 函数给出的结果与 webbrowser.open() 函数不同

转载 作者:行者123 更新时间:2023-12-01 00:24:22 24 4
gpt4 key购买 nike

我有一个需要运行的网址才能进行刷新。它将刷新数据缓存并在 Tableau Server 中显示最新上传的数据。网址是这样的:

http://servername/views/workbookname/dashboard1?:refresh=yes

当我使用 webbrowser 库打开 url 时,会执行刷新,但浏览器已打开。当我使用 requests 获取 url 时,它不会刷新并给出 200 的响应,我认为这是成功的。

有人知道为什么会发生这种情况吗?如何默默地使用 webbrowser lib 打开 url 并随后关闭它,或者在执行 get 函数时让请求充当 webbrowser?

import webbrowser
url = 'http://servername/views/workbookname/dashboard1?:refresh=yes'
webbrowser.open(url)

import requests
url = "http://servername/views/workbookname/dashboard1?:refresh=yes"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.76 Safari/537.36', "Upgrade-Insecure-Requests": "1","DNT": "1","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Language": "en-US,en;q=0.5","Accept-Encoding": "gzip, deflate"}
html = requests.get(url,headers=headers)
print(html)

最佳答案

requests.get() 仅返回“GET”请求后从服务器接收的标记,无需任何进一步的客户端执行。

而在浏览器上下文中,客户端 JavaScript 可以完成更多工作。我没有专门查看您的页面,但可能有某些 javascript 代码正在做进一步处理。

您可以使用 Selenium,而不是 网络浏览器请求。您可以阅读更多相关信息here .

Selenium 可以让您像使用浏览器一样浏览页面,而且还可以灵活地使用 Python 代码自动控制页面上的操作。

您也许可以使用Selenium Chrome Webdriver在后台加载页面。 (或者您可以使用 Firefox 驱动程序)。

转至 chrome://settings/help 检查您当前的 chrome 版本并从 here 下载该版本的驱动程序。确保将驱动程序文件保存在您的 PATH 中或 Python 脚本所在的同一文件夹中。

试试这个:

from selenium.webdriver import Chrome # pip install selenium
from selenium.webdriver.chrome.options import Options

url = "http://servername/views/workbookname/dashboard1?:refresh=yes"

#Make it headless i.e. run in backgroud without opening chrome window
chrome_options = Options()
chrome_options.add_argument("--headless")

# use Chrome to get page with javascript generated content
with Chrome(executable_path="./chromedriver", options=chrome_options) as browser:
browser.get(url)
page_source = browser.page_source
<小时/>

注意

当您打开 URL 时,webbrowser 模块会启动已缓存您的凭据/cookie 的默认浏览器。然而,如果您的 URL 需要任何身份验证或登录才能访问,则必须在使用 selenium 获取页面时提供这些信息。将每个 selenium Web 驱动程序 session 视为隐身 session 。 Here这是有关如何使用 Web 驱动程序模拟登录的示例。

<小时/>

引用文献:

selenium - chromedriver executable needs to be in PATH

关于python - Requests.get() 函数给出的结果与 webbrowser.open() 函数不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58719422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com