Poniższe działa, gdy wklejam go w przeglądarce:
http://www.somesite.com/details.pl?urn=2344
Ale kiedy próbuję odczytać adres URL w Pythonie, nic się nie dzieje:
link = 'http://www.somesite.com/details.pl?urn=2344'
f = urllib.urlopen(link)
myfile = f.readline()
print myfile
Czy muszę zakodować adres URL, czy jest coś, czego nie widzę?
requests
modułu marki , jego użycie prowadzi do bardziej Pythonowego kodu.Traceback (most recent call last): File "/home/lars/parser.py", line 9, in <module> f = urllib.urlopen(link) AttributeError: module 'urllib' has no attribute 'urlopen'
pojawia się następujący błąd: Wygląda na to, że w pythonie 3.5 nie ma funkcji urlopen. Czy została zmieniona? EDYCJA: Fragment w odpowiedzi poniżej rozwiązuje:from urllib.request import urlopen
urlib
pakiet widział pewne refaktoryzacje i zmiany API. Zaktualizuję odpowiedź, aby podkreślić Python 2.Dla
python3
użytkowników, aby zaoszczędzić czas, użyj następującego kodu,from urllib.request import urlopen link = "https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html" f = urlopen(link) myfile = f.read() print(myfile)
Wiem, że istnieją różne wątki dotyczące błędów:
Name Error: urlopen is not defined
ale pomyślałem, że może to zaoszczędzić czas.źródło
Rozwiązanie współpracujące z Python 2.X i Python 3.X korzysta z biblioteki kompatybilności z Python 2 i 3
six
:from six.moves.urllib.request import urlopen link = "http://www.somesite.com/details.pl?urn=2344" response = urlopen(link) content = response.read() print(content)
źródło
Żadna z tych odpowiedzi nie jest bardzo dobra dla Pythona 3 (testowana w najnowszej wersji w czasie tego postu).
Tak to się robi...
import urllib.request try: with urllib.request.urlopen('http://www.python.org/') as f: print(f.read().decode('utf-8')) except urllib.error.URLError as e: print(e.reason)
Powyższe dotyczy zawartości, która zwraca „utf-8”. Usuń .decode ('utf-8'), jeśli chcesz, aby Python „odgadł odpowiednie kodowanie”.
Dokumentacja: https://docs.python.org/3/library/urllib.request.html#module-urllib.request
źródło
Treść html strony możemy odczytać jak poniżej:
from urllib.request import urlopen response = urlopen('http://google.com/') html = response.read() print(html)
źródło
#!/usr/bin/python # -*- coding: utf-8 -*- # Works on python 3 and python 2. # when server knows where the request is coming from. import sys if sys.version_info[0] == 3: from urllib.request import urlopen else: from urllib import urlopen with urlopen('https://www.facebook.com/') as \ url: data = url.read() print data # When the server does not know where the request is coming from. # Works on python 3. import urllib.request user_agent = \ 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7' url = 'https://www.facebook.com/' headers = {'User-Agent': user_agent} request = urllib.request.Request(url, None, headers) response = urllib.request.urlopen(request) data = response.read() print data
źródło
Adres URL powinien być ciągiem:
import urllib link = "http://www.somesite.com/details.pl?urn=2344" f = urllib.urlopen(link) myfile = f.readline() print myfile
źródło
Użyłem następującego kodu:
import urllib def read_text(): quotes = urllib.urlopen("https://s3.amazonaws.com/udacity-hosted-downloads/ud036/movie_quotes.txt") contents_file = quotes.read() print contents_file read_text()
źródło
# retrieving data from url # only for python 3 import urllib.request def main(): url = "http://docs.python.org" # retrieving data from URL webUrl = urllib.request.urlopen(url) print("Result code: " + str(webUrl.getcode())) # print data from URL print("Returned data: -----------------") data = webUrl.read().decode("utf-8") print(data) if __name__ == "__main__": main()
źródło
from urllib.request import urlopen # if has Chinese, apply decode() html = urlopen("https://blog.csdn.net/qq_39591494/article/details/83934260").read().decode('utf-8') print(html)
źródło
Do odczytywania danych w witrynie internetowej można używać bibliotek
requests
ibeautifulsoup
. Po prostu zainstaluj te dwie biblioteki i wpisz następujący kod.import requests import bs4 help(requests) help(bs4)
Otrzymasz wszystkie potrzebne informacje o bibliotece.
źródło
help
służy do przeglądania dokumentacji danego modułu / klasy / funkcji. Myślę, że to pytanie dotyczy sposobu wyświetlenia treści odpowiedzi