Python没有';我不能上网,但C#可以

Python没有';我不能上网,但C#可以,c#,python,proxy,firewall,C#,Python,Proxy,Firewall,我正在做一个需要下载特定网页内容的项目,我用C#编写的代码工作得非常好,但是,Python似乎无法连接到互联网,引发了一个异常 也许是因为我在一个公司网络中工作,这就是为什么Python可能会被防火墙阻止。但是,C#代码如何,为什么它能工作 我想将Python代码模拟为C#WebClient行为 谢谢 C#代码 皮顿码 import urllib link = "https://www.google.com" f = urllib.urlopen(link) myfile = f.read()

我正在做一个需要下载特定网页内容的项目,我用C#编写的代码工作得非常好,但是,Python似乎无法连接到互联网,引发了一个异常

也许是因为我在一个公司网络中工作,这就是为什么Python可能会被防火墙阻止。但是,C#代码如何,为什么它能工作

我想将Python代码模拟为C#WebClient行为

谢谢

C#代码

皮顿码

import urllib

link = "https://www.google.com"
f = urllib.urlopen(link)
myfile = f.read()
print myfile
Python异常

[Errno socket error][Errno 10060]连接尝试失败,因为 关联方在一段时间后未作出适当回应, 或建立的连接失败,因为连接的主机无法连接 回应


[编辑01]

[编辑02] 已尝试
WebClient.Proxy=null

WebClient wc = new WebClient();
wc.Proxy = null;
string str = wc.DownloadString("https://www.google.com");            
Console.WriteLine(str);
然后我得到了这个例外。(
我在一个Java程序中也遇到了这个异常

{“操作已超时”}

位于System.Net.WebClient.DownloadDataInternal(Uri地址、WebRequest和request)
位于System.Net.WebClient.DownloadString(Uri地址)
位于System.Net.WebClient.DownloadString(字符串地址)
在\WebClient\Program.cs中的WebClient.Program.Main(字符串[]args)处:第17行
位于System.AppDomain.\u nExecuteAssembly(RuntimeAssembly程序集,字符串[]args)
位于System.AppDomain.ExecuteAssembly(字符串汇编文件、证据汇编安全性、字符串[]args)
在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()上
位于System.Threading.ThreadHelper.ThreadStart\u上下文(对象状态)
位于System.Threading.ExecutionContext.RunInternal(ExecutionContext ExecutionContext、ContextCallback回调、对象状态、布尔值preserveSyncCtx)
在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态,布尔保存SyncCTX)
在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态)
位于System.Threading.ThreadHelper.ThreadStart()处

Copy粘贴您的Python代码并在Python 2中运行对我来说很好。您所在的公司网络可能设置了代理服务器吗?可能是因为C#WebClient可以自动检测代理(如果您有代理服务器的话)(我可能错了,但我记得它会在Internet Explorer存储代理服务器的同一位置查找代理服务器)。尝试将WebClient.Proxy设置为null,然后查看其行为是否与python脚本相同。谢谢大家。我的配置如图所示。因此,正如我们从截图中看到的,您确实使用了代理(带有自动配置脚本)。Proxy=null的故障确认了这一点。所以现在你需要弄清楚如何在python中设置代理。复制粘贴你的python代码并在python 2中运行对我来说很好。你是在一个可能设置了代理服务器的公司网络上吗?也许这是因为如果你有代理服务器,C#WebClient可以自动检测代理(我可能错了,但我记得它会在Internet Explorer存储它们的同一个位置查找它们)。尝试将WebClient.Proxy设置为null,然后查看其行为是否与python脚本相同。谢谢大家。我的配置如图所示。因此,正如我们从屏幕截图中看到的,您确实使用了Proxy(带有自动配置脚本)。Proxy=null的失败证实了这一点。因此,现在您需要了解如何在python中设置代理。
WebClient wc = new WebClient();
wc.Proxy = null;
string str = wc.DownloadString("https://www.google.com");            
Console.WriteLine(str);
   at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
   at System.Net.WebClient.DownloadString(Uri address)
   at System.Net.WebClient.DownloadString(String address)
   at WebClientTest.Program.Main(String[] args) in <ProjectPath>\WebClientTest\Program.cs:line 17
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()