如何向下载的 html 文件发送请求

How to send requests to a downloaded html file

我下载了一个 .html 文件,想向该文件发送请求以获取其内容。

但是,如果我执行以下操作:

import requests
html_file  = "/user/some_html.html"
r = requests.get(html_file)

出现以下错误:

Invalid URL 'some_html.html': No schema supplied.

如果我添加架构,我会收到以下错误:

HTTPConnectionPool(host='some_html.html', port=80): Max retries exceeded with url:

我想知道如何在下载文件时专门向 html 文件发送请求。

您正在从本地目录访问 html 文件。 get() 方法使用 HTTPConnection 和端口 80 从网站而不是本地目录访问数据。要使用 get() 方法从本地目录访问文件,请使用 Xampp 或 Wampp。 要从本地目录访问文件,您可以使用 open(),而 requests.get() 用于从 Port 80 访问文件,使用简单的 http 连接来自互联网而不是本地目录

import requests
html_file  = "/user/some_html.html"
t=open(html_file, "r")
for v in t.readlines():
  print(v)

输出:

您不会“向 html 文件发送请求”。相反,您可以向 Internet 上的 HTTP 服务器发送请求,该服务器将 return 包含 html 文件内容的响应。

文件本身对“请求”一无所知。如果您将文件存储在本地并想对其执行某些操作,则可以像打开任何其他文件一样打开它。

如果您有兴趣了解有关请求和响应模型的更多信息,我建议您尝试类似

response = requests.get("http://whosebug.com")

您还应该阅读有关 HTTP 以及请求和响应的内容,以更好地理解其工作原理。

您可以通过为您的 html 文件设置一个 本地服务器 来实现。 如果您使用 Ritwick Dey 的 Visual Studio Code, you can install Live Server

然后你做如下:

1 - 发出第一个请求并将 html 内容保存到 .html 文件中:

my_req.py

import requests

file_path = './'
file_name = 'my_file'

url = "https://www.qwant.com/"

response = requests.request("GET", url)

w = open(file_path + file_name + '.html', 'w')
w.write(response.text)

2 - 在 Visual Studio Code 上安装了 Live Server,点击 my_file.html,然后点击 Go Live.

3 - 现在您可以向您的本地 http 架构发出请求

第二次请求

import requests

url = "http://127.0.0.1:5500/my_file.html"

response = requests.request("GET", url)

print(response.text)

还有,查兰!!做你需要做的事。

在爬虫工作中,我遇到过一种情况,即网站上显示的内容与使用 response.text 检索到的内容存在差异,因此 xpath与网站上的不一样,所以我需要下载内容,制作本地 html 文件,并获取新的 xpaths 以获取我需要的信息。