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)