Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 指定HTTP协议会有所不同吗?_Python_Html_Http_Https_Http Headers - Fatal编程技术网

Python 指定HTTP协议会有所不同吗?

Python 指定HTTP协议会有所不同吗?,python,html,http,https,http-headers,Python,Html,Http,Https,Http Headers,这两个bs4对象之间有区别吗 from urllib2 import urlopen, Request from bs4 import BeautifulSoup req1 = Request("https://stackoverflow.com/") # HTTPS html1 = urlopen(req1).read() req2 = Request("http://stackoverflow.com/") # HTTP html2 = urlopen(req2).read() b

这两个bs4对象之间有区别吗

from urllib2 import urlopen, Request
from bs4 import BeautifulSoup

req1 = Request("https://stackoverflow.com/")  # HTTPS
html1 = urlopen(req1).read()

req2 = Request("http://stackoverflow.com/")  # HTTP
html2 = urlopen(req2).read()

bsObj1 = BeautifulSoup(html1, "html.parser")
bsObj2 = BeautifulSoup(html2, "html.parser")

您真的需要指定HTTP协议吗?

我的理解有限:在这种情况下没有实际区别

我的理解是,大多数有https的网站都会将http URL重定向到https,这里就是这样。站点有可能同时启动http版本和https版本,在这种情况下,它们可能不会重定向。这将是一种糟糕的做法,但没有什么能阻止某人这么做


我仍然会尽可能明确地使用https,这是一种最佳实践。

我的理解有限:在这种情况下没有实际区别

我的理解是,大多数有https的网站都会将http URL重定向到https,这里就是这样。站点有可能同时启动http版本和https版本,在这种情况下,它们可能不会重定向。这将是一种糟糕的做法,但没有什么能阻止某人这么做


我仍然会尽可能明确地使用https,这是一种最佳实践。

所有通过HTTP协议的通信都是使用HTTP动词GET、POST、PUT和DELETE进行的。指定协议有两个目的:

1) 它指定了数据通信的方案

一般URI的形式为:
方案:[//[user[:password]@]host[:port][/path][?query][#fragment]常见的方案有http(s)、ftp、mailto、文件、数据和irc

2) 指定方案是否支持SSL加密

对于http方案,https中添加的“s”确保了数据的SSL加密

根据
urlib3
Python:

强烈建议始终使用SSL证书验证。为了启用验证,您需要一组根证书。最简单、最可靠的方法是使用
certifi
包,该包提供Mozilla的根证书捆绑包:

PoolManager将自动处理证书验证,并在验证失败时引发SSLError:

>>> http.request('GET', 'https://google.com')
(No exception)
>>> http.request('GET', 'https://expired.badssl.com')
urllib3.exceptions.SSLError ...

所有通过HTTP协议的通信都使用HTTP动词GET、POST、PUT和DELETE进行。指定协议有两个目的:

1) 它指定了数据通信的方案

一般URI的形式为:
方案:[//[user[:password]@]host[:port][/path][?query][#fragment]常见的方案有http(s)、ftp、mailto、文件、数据和irc

2) 指定方案是否支持SSL加密

对于http方案,https中添加的“s”确保了数据的SSL加密

根据
urlib3
Python:

强烈建议始终使用SSL证书验证。为了启用验证,您需要一组根证书。最简单、最可靠的方法是使用
certifi
包,该包提供Mozilla的根证书捆绑包:

PoolManager将自动处理证书验证,并在验证失败时引发SSLError:

>>> http.request('GET', 'https://google.com')
(No exception)
>>> http.request('GET', 'https://expired.badssl.com')
urllib3.exceptions.SSLError ...

非常感谢您的回答,您知道为什么比较两个html字符串会返回False吗?如果站点重定向,我会认为这两个html字符串是相同的。我手动检查了它,对我来说,这两个差异是标题中的服务器响应时间和页面底部某些类别的顺序。从内容的角度看,它们是相同的。编辑:我认为是网络上的热点问题导致了事情的混乱/可能有所不同。不过我已经删除了我的临时文件,所以我不能很快再次检查。谢谢,可能就是这样。非常感谢你的回答,你知道为什么比较两个html字符串会返回False吗?如果站点重定向,我会认为这两个html字符串是相同的。我手动检查了它,对我来说,这两个差异是标题中的服务器响应时间和页面底部某些类别的顺序。从内容的角度看,它们是相同的。编辑:我认为是网络上的热点问题导致了事情的混乱/可能有所不同。不过,我已经删除了我的临时文件,所以我无法快速地进行双重检查。谢谢,可能就是这样。虽然所有这些都不是错误的,但这与问题无关。它强调使用https以及如何在python库中提供ssl验证。公认的答案还鼓励使用https作为最佳实践。虽然所有这些都不是错误的,但它实际上与问题无关。它强调使用https以及如何在python库中提供ssl验证。公认的答案还鼓励使用https作为最佳实践。