Python 3 Получить страницу HTTP - PullRequest
28 голосов
/ 08 января 2010

Как мне получить python для получения содержимого HTTP-страницы? Пока все, что у меня есть, это запрос, и я импортировал http.client.

Ответы [ 6 ]

49 голосов
/ 08 января 2010

Использование urllib.request, вероятно, самый простой способ сделать это:

import urllib.request
f = urllib.request.urlopen("http://stackoverflow.com")
print(f.read())
8 голосов
/ 17 декабря 2016

Использование встроенного модуля "http.client"

import http.client

connection = http.client.HTTPSConnection("api.bitbucket.org", timeout=2)
connection.request('GET', '/2.0/repositories')
response = connection.getresponse()
print('{} {} - a response on a GET request by using "http.client"'.format(response.status, response.reason))
content = response.read().decode('utf-8')
print(content[:100], '...')

Результат:

200 OK - ответ на запрос GET с использованием «http.client» {"pagelen": 10, "values": [{"scm": "hg", "website": "", "has_wiki": true, "name": "tweakmsg", "links ...

Использование сторонних библиотек "запросов"

response = requests.get("https://api.bitbucket.org/2.0/repositories")
print('{} {} - a response on a GET request by using "requests"'.format(response.status_code, response.reason))
content = response.content.decode('utf-8')
print(content[:100], '...')

Результат:

200 OK - ответ на запрос GET с использованием "http.client" {"pagelen": 10, "values": [{"scm": "hg", "website": "", "has_wiki": true, "name": "tweakmsg", "links ...

Использование встроенного модуля "urllib.request"

response = urllib.request.urlopen("https://api.bitbucket.org/2.0/repositories")
print('{} {} - a response on a GET request by using "urllib.request"'.format(response.status, response.reason))
content = response.read().decode('utf-8')
print(content[:100], '...')

Результат:

200 OK - ответ на запрос GET с использованием «http.client» {"pagelen": 10, "values": [{"scm": "hg", "website": "", "has_wiki": true, "name": "tweakmsg", "links ...

Примечания:

  1. Python 3.4
  2. Результат от ответов, скорее всего, будет отличаться только содержанием
1 голос
/ 18 мая 2016

Вы также можете использовать библиотеку запросов. Я нашел это особенно полезным, потому что было легче получить и отобразить заголовок HTTP.

import requests

source = 'http://www.pythonlearn.com/code/intro-short.txt'

r = requests.get(source)

print('Display actual page\n')
for line in r:
    print (line.strip())

print('\nDisplay all headers\n')
print(r.headers)
0 голосов
/ 09 ноября 2018

запросов на установку в пипсах

import requests

r = requests.get('https://api.spotify.com/v1/search?type=artist&q=beyonce')
r.json()
0 голосов
/ 21 октября 2017

https://stackoverflow.com/a/41862742/8501970 Проверьте это вместо этого. Это примерно та же проблема, что и у вас, и эта очень простая и очень мало строк кода. Это наверняка помогло мне, когда я понял, что python3 не может использовать просто get_page.

Это прекрасная альтернатива. (надеюсь, это поможет, ура!)

0 голосов
/ 15 октября 2015

Добавьте этот код, который может форматировать данные для чтения человеком:

text = f.read().decode('utf-8')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...