连接到互联网?
Posted
技术标签:
【中文标题】连接到互联网?【英文标题】:Connecting to Internet? 【发布时间】:2017-01-11 17:39:18 【问题描述】:我在使用 python 连接到 Internet 时遇到问题。
我在使用 PAC 文件设置代理的公司网络上。现在,如果我能找到并解析 PAC 以获得我需要的东西但我不能。
怪事:
R 可以连接到 Internet 以通过 wininet 和 .External(C_download,...) 下载文件,所以我知道这是可能的,当我这样做时:
import ctypes
wininet = ctypes.windll.wininet
flags = ctypes.wintypes.DWORD()
connected = wininet.InternetGetConnectedState(ctypes.byref(flags), None)
print(connected, hex(flags.value))
我得到:1 0x12,所以我有一个可用的连接,但是一旦我尝试使用 wininet 中的其他功能,我就会经常遇到错误功能,例如:
AttributeError: function 'InternetCheckConnection' not found
这几乎适用于 wininet 的任何其他函数,但这并不让我感到惊讶,因为 dir(wininet) 中唯一命名的函数是 InternetGetConnectedState。
wininet 方法显然可以工作,但我不知道如何继续使用它[特别是考虑到我只在工作中使用 Windows]。
【问题讨论】:
据我所知,没有必要将 Python 连接到 Internet,因为 Python 本身并不真正关心这一点。只需确保您的计算机已连接到 Internet,Python 将自动能够使用此连接。 当你说“继续”时,你想做什么? 尝试独立导入模块?from ctypes.windll import wininet
from ctypes.wintypes import DWORD
等等..
@BillBell 如果我尝试这样做:使用 wininet.InternetOpen('blah') 然后尝试获取我无法获取的页面内容,因为 InternetOpen 不可用。
@fūjin,我不知道 PAC 代表什么,但是如果您必须拥有这些东西才能连接到 Internet,但又无法获得它,您认为 Python 会如何帮助您?我认为,您可以直接去找工作中的网络管理员,让他们将您的计算机连接到 Internet。当您无法访问互联网时,就像在您和“外部世界”之间有一堵巨大的坚不可摧的墙,上面有一个小钥匙孔,这样管理员就可以将他们的钥匙插入其中并让您出去。问题是,Python 是一条比较大的蛇,不能从钥匙孔里挤过去 :)
【参考方案1】:
“好吧,措辞太糟糕了——让我们把它改成:打开一个到网页的连接并使用 python 获取它的内容”
听起来您实际上需要BeautifulSoup 和Requests。这是用于浏览网页的快速example
【讨论】:
【参考方案2】:首先,我强烈建议安装requests
模块。在 Python 上不使用 HTTP 执行 HTTP 非常痛苦。
根据this answer需要从主机wpad
下载wpad.dat
。那是一个包含代理地址的文本文件。
知道代理设置后,您可以配置requests
来使用它们:
import requests
proxies =
'http': 'http://10.10.1.10:3128',
'https': 'http://10.10.1.10:1080',
requests.get('http://example.org', proxies=proxies)
【讨论】:
以上是关于连接到互联网?的主要内容,如果未能解决你的问题,请参考以下文章