/ / Łączenie z Internetem? - python, python-3.x, ctypes, wininet

Łączenie się z Internetem? - python, python-3.x, ctypes, wininet

Mam problemy z łączeniem się z Internetem za pomocą Pythona.

Jestem w sieci korporacyjnej, która używa pliku PAC do ustawiania serwerów proxy. Teraz byłoby dobrze, gdybym mógł znaleźć i przeanalizować PAC, aby uzyskać to, czego potrzebuję, ale nie mogę.

Osobliwość:

R może połączyć się z Internetem, aby pobrać pliki przez Wininet i .External (C_download, ...), więc wiem, że jest to możliwe i kiedy to robię:

import ctypes

wininet = ctypes.windll.wininet
flags = ctypes.wintypes.DWORD()
connected = wininet.InternetGetConnectedState(ctypes.byref(flags), None)
print(connected, hex(flags.value))

Dostaję: 1 0x12, więc mam dostępne połączenie, ale gdy próbuję użyć innych funkcji z Wininet, stale spotykam się z funkcjami błędu takimi jak:

AttributeError: function "InternetCheckConnection" not found

i dotyczy to niemal każdej innej funkcji wininet, ale nie dziwi mnie to, ponieważ jedyną nazwaną funkcją w katalogu (wininet) jest InternetGetConnectedState.

Podejście wininet może wyraźnie działać, ale nie mam pojęcia, jak to zrobić [zwłaszcza, że ​​używam tylko systemu Windows w pracy].

Odpowiedzi:

0 dla odpowiedzi № 1

„ok, tak kiepskie sformułowanie - zmieńmy to, aby: otworzyć połączenie ze stroną internetową i uzyskać jej zawartość za pomocą pythona”

Brzmi tak, jak naprawdę potrzebujesz BeautifulSoup i Upraszanie. Oto szybki przykład z nich wykorzystuje się do eksploracji strony internetowej


0 dla odpowiedzi nr 2

Po pierwsze, chciałbym silnie zasugeruj instalację requests moduł. Robienie HTTP bez niego w Pythonie jest dość bolesne.

Według ta odpowiedź musisz pobrać wpad.dat od gospodarza wpad. To jest plik tekstowy zawierający adres proxy.

Gdy znasz ustawienia proxy, możesz je skonfigurować requests z nich korzystać:

import requests

proxies = {
"http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080",
}

requests.get("http://example.org", proxies=proxies)