Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как создать файл get


использование get, post и других запросов

От автора: Python предоставляет несколько способов загрузки файлов из Интернета. Это можно сделать через HTTP, используя пакет urllib или библиотеку requests. В этом руководстве мы рассмотрим, как использовать эти библиотеки для загрузки файлов с URL-адресов с помощью Python.

requests

Библиотека requests является одной из самых популярных библиотек в Python. Она позволяет отправлять HTTP / 1.1 запросы без необходимости вручную добавлять строки запросов к URL-адресам или кодировать данные в форме POST. С помощью библиотеки requests вы можете выполнять множество вещей, в том числе:

добавление данных формы,

добавление составных файлов,

и доступ к данным ответа Python

Бесплатный курс «Python. Быстрый старт»

Получите курс и узнайте, как создать программу для перевода текстов на Python

Получить курс

Выполнение запросов

Первое, что вам нужно сделать, это установить библиотеку:

Чтобы проверить, была ли установка успешной, вы можете выполнить очень простой тест в интерпретаторе python, просто набрав:

Если установка прошла успешно, ошибок не будет.

HTTP-запросы включают в себя:

GET

POST

PUT

DELETE

OPTIONS

HEAD

Создание запроса GET

Вы можете выполнять запросы очень просто.

import requests req = requests.get("//www.google.com")

import requests

req = requests.get("//www.google.com")

Приведенная выше команда получит веб-страницу Google и сохранит информацию в переменной req. Затем мы можем получить другие атрибуты. Например, чтобы узнать, была ли загрузка веб-страницы Google успешной, мы запросим код status_code.

import requests req = requests.get(“//www.google.com") req.status_code 200 # 200 means a successful request

import requests

req = requests.get(“//www.google.com")

req.status_code

200

# 200 means a successful request

Что, если мы хотим выяснить тип кодировки веб-страницы Google?

req.encoding ISO-8859–1

Вы также можете узнать содержание ответа.

Это только усеченное содержание ответа.

'<!doctype html><html itemscope="" itemtype="//schema.org/WebPage" lang="en "><head><meta content="Search the world\'s information, including webpages, imag es, videos and more. Google has many special features to help you find exactly w hat you\'re looking for." name="description"><meta content="noodp" name="robots" ><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><meta conten t="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image "><title>Google</title><script>(function(){window.google={kEI:\'_Oq7WZT-LIf28QWv

'<!doctype html><html itemscope="" itemtype="//schema.org/WebPage" lang="en

"><head><meta content="Search the world\'s information, including webpages, imag

es, videos and more. Google has many special features to help you find exactly w

hat you\'re looking for." name="description"><meta content="noodp" name="robots"

><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><meta conten

t="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image

"><title>Google</title><script>(function(){window.google={kEI:\'_Oq7WZT-LIf28QWv

Создание запроса POST

В общем, запрос POST используется для создания или обновления данных. Особенно при отправке данных форм.

Предположим, у вас есть форма регистрации, в которой в качестве входных данных используются адрес электронной почты и пароль. Когда вы нажимаете кнопку отправки для регистрации, запрос на публикацию будет выглядеть так, как показано ниже.

data = {"email":"[email protected]", "password":"12345") req = requests.post(“//www.google.com, params = data)

data = {"email":"[email protected]",

        "password":"12345")

req = requests.post(“//www.google.com, params = data)

Создание запроса PUT

Запрос PUT похож на POST. Он используется для обновления данных. Например, API ниже демонстрирует, как выполнить PUT-запрос.

data= {"name":"tutsplus", "telephone":"12345") r.put("//www.contact.com, params= data")

data= {"name":"tutsplus",

        "telephone":"12345")

r.put("//www.contact.com, params= data")

Создание запроса DELETE

Запрос DELETE, как следует из названия, используется для удаления данных. Ниже приведен пример DELETE-запроса.

Бесплатный курс «Python. Быстрый старт»

Получите курс и узнайте, как создать программу для перевода текстов на Python

Получить курс

data= {'name':'Tutsplus'} url = "//www.contact.com/api/") response = requests.delete(url, params= data)

data= {'name':'Tutsplus'}

url = "//www.contact.com/api/")

response = requests.delete(url, params= data)

Пакет urllib

urllib это пакет, который собирает несколько модулей для работы с URL-адресами, а именно:

urllib.request для открытия и чтения URL.

urllib.error содержит исключения, поднятые urllib.request

urllib.parse для разбора URL-адресов.

urllib.robotparser для разбора файлов robots.txt.

urllib.request предлагает очень простой интерфейс в виде функции urlopen, способной извлекать URL-адреса с использованием различных протоколов. Она также предлагает немного более сложный интерфейс для обработки базовой аутентификации, файлов cookie, прокси и т. д.

Как получить URL с помощью urllib

Простейший способ использовать urllib.request заключается в следующем:

import urllib.request with urllib.request.urlopen('//python.org/') as response: html = response.read()

import urllib.request

with urllib.request.urlopen('//python.org/') as response:

   html = response.read()

Если вы хотите получить интернет-ресурс и сохранить его, вы можете сделать это с помощью функции urlretrieve().

import urllib.request filename, headers = urllib.request.urlretrieve('//python.org/') html = open(filename)

import urllib.request

filename, headers = urllib.request.urlretrieve('//python.org/')

html = open(filename)

Загрузка изображений с помощью Python

В этом примере мы хотим загрузить изображение, доступное по этой ссылке, используя как библиотеку запроса, так и модуль urllib.

url = '//www.python.org/static/opengraph-icon-200x200.png' # downloading with urllib # imported the urllib library import urllib # Copy a network object to a local file urllib.urlretrieve(url, "python.png") # downloading with requests # import the requests library import requests # download the url contents in binary format r = requests.get(url) # open method to open a file on your system and write the contents with open("python1.png", "wb") as code: code.write(r.content)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

url = '//www.python.org/static/opengraph-icon-200x200.png'

# downloading with urllib

# imported the urllib library

import urllib

# Copy a network object to a local file

urllib.urlretrieve(url, "python.png")

# downloading with requests

# import the requests library

import requests

# download the url contents in binary format

r = requests.get(url)

# open method to open a file on your system and write the contents

with open("python1.png", "wb") as code:

    code.write(r.content)

Скачивание PDF файлы с помощью Python

В этом примере мы скачиваем PDF-файл о трендах Google по этой ссылке.

url = '//static.googleusercontent.com/media/www.google.com/en//googleblogs/pdfs/google_predicting_the_present.pdf' # downloading with urllib # import the urllib package import urllib # Copy a network object to a local file urllib.urlretrieve(url, "tutorial.pdf") # downloading with requests # import the requests library import requests # download the file contents in binary format r = requests.get(url) # open method to open a file on your system and write the contents with open("tutorial1.pdf", "wb") as code: code.write(r.content)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

url = '//static.googleusercontent.com/media/www.google.com/en//googleblogs/pdfs/google_predicting_the_present.pdf'

# downloading with urllib

# import the urllib package

import urllib

# Copy a network object to a local file

urllib.urlretrieve(url, "tutorial.pdf")

# downloading with requests

# import the requests library

import requests

# download the file contents in binary format

r = requests.get(url)

# open method to open a file on your system and write the contents

with open("tutorial1.pdf", "wb") as code:

    code.write(r.content)

Скачивание Zip файлов с помощью Python

В этом примере мы собираемся скачать содержимое репозитория GitHub, расположенного по этой ссылке, и сохранить файл локально.

url = '//codeload.github.com/fogleman/Minecraft/zip/master' # downloading with requests # import the requests library import requests # download the file contents in binary format r = requests.get(url) # open method to open a file on your system and write the contents with open("minemaster1.zip", "wb") as code: code.write(r.content) # downloading with urllib # import the urllib library import urllib # Copy a network object to a local file urllib.urlretrieve(url, "minemaster.zip")

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

url = '//codeload.github.com/fogleman/Minecraft/zip/master'

# downloading with requests

# import the requests library

import requests

# download the file contents in binary format

r = requests.get(url)

# open method to open a file on your system and write the contents

with open("minemaster1.zip", "wb") as code:

    code.write(r.content)

# downloading with urllib

# import the urllib library

import urllib

# Copy a network object to a local file

urllib.urlretrieve(url, "minemaster.zip")

Скачивание видео с помощью Python

В этом примере мы хотим скачать видео-лекцию, доступную на этой странице.

url = '//www.youtube.com/watch?v=aDwCCUfNFug' video_name = url.split('/')[-1] # using requests # imported the requests library import requests print "Downloading file:%s" % video_name # download the url contents in binary format r = requests.get(url) # open method to open a file on your system and write the contents with open('tutorial.mp4', 'wb') as f: f.write(r.content) # using urllib # imported the urllib library import urllib print "Downloading file:%s" % video_name # Copy a network object to a local file urllib.urlretrieve(url, "tutorial2.mp4")

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

url = '//www.youtube.com/watch?v=aDwCCUfNFug'

video_name = url.split('/')[-1]

# using requests

# imported the requests library

import requests

print "Downloading file:%s" % video_name

# download the url contents in binary format

r = requests.get(url)

# open method to open a file on your system and write the contents

with open('tutorial.mp4', 'wb') as f:

    f.write(r.content)

# using urllib

# imported the urllib library

import urllib

print "Downloading file:%s" % video_name

# Copy a network object to a local file

urllib.urlretrieve(url, "tutorial2.mp4")

Заключение

В этом руководстве рассматриваются наиболее часто используемые методы загрузки файлов, а также наиболее распространенные форматы. Несмотря на то, что вы будете писать меньше кода при использовании модуля urllib, предпочтительно использовать модуль requests из-за его простоты, популярности и широкого спектра функций, включая:

Поддерживаемый поллинг

Международные домены и URL-адреса

Сессии с сохранением Cookie

Верификация SSL как в браузере

Автоматическое декодирование контента

Базовая / дайджест-аутентификация

Элегантные куки ключ / значение

Автоматическая декомпрессия

Тела ответа Unicode

Поддержка HTTP(S) Proxy

Загрузка нескольких файлов

Потоковые загрузки

Время ожидания подключения

Чанкированные запросы

Поддержки .netrc

Автор: Esther Vaati

Источник: //code.tutsplus.com

Редакция: Команда webformyself.

Бесплатный курс «Python. Быстрый старт»

Получите курс и узнайте, как создать программу для перевода текстов на Python

Получить курс

Учимся работать с GET и POST запросами ::: Блог RS

GET запрос

Вы могли заметить, что на большинство сайтов можно лицезреть вот такие адреса:

http://rio-shaman.ru/index.php?blog=2

Тут, даже не зная php, можно догадаться, что мы обращаемся к файлу index.php Но то, что идет после знака вопроса, мало кто знает. Все довольно просто: ?blog=2 это объявление глобальной переменной «$_GET['blog']» с значением «2». Таким образом я в скрипт передаю переменную которая отвечает за вывод информации из базы данных. Давайте напишем небольшой скрипт в котором Вы все наглядно увидите:

<?php
if(isset($_GET['blog'])) {
echo $_GET['blog'];
}
?>

Мы используем оператор условий if() в качестве условия стоит вот такая строчка:

isset() позволяет узнать существует ли переменная которая указана в скобках, то есть условие которое я описал в коде звучит так: Если существует переменная $_GET['blog'] то вывести содержимое этой переменной на экран. Вот что получилось:

Думаю понятно  Создается глобальная переменная $_GET с идентификатором который мы объявили в адресной строке (в данном случае с идентификатором «blog»)

Теперь хочу пояснить один момент. Предположим нам необходимо объявить две переменные, как это сделать? Первая переменная объявляется после знака вопроса «?» Вторая же переменная объявляется после такого знака «&» (Если честно не знаю что это за знак ), вот пример объявление трех переменных:

http://rio-shaman.ru/index.php?a=1&b=2&c=3

Вот код вывода:

<?php
if(isset($_GET['a']) AND isset($_GET['b']) AND isset($_GET['c']) ) {
echo $_GET['a']."<br>";
echo $_GET['b']."<br>";
echo $_GET['c']."<br>";
}
?>

Условие звучит так:

Если существует глобальная переменная $_GET['a'] и глобальная переменная $_GET['b'] и глобальная переменная $_GET['с'] то вывести их на экран, вот результат:

Формы

Прежде чем мы перейдем к post запросам, необходимо разобрать, что такое формы? Почему нужно? Потому что глобальная переменная $_POST[''] создается именно через формы. Что такое форма? Это поля для ввода какой-нить информации пользователем. Поля бывают в одну строчку, большие поля, так же бывают радио кнопочки, чек боксы. Разберем все по порядку...

Форма это тег:

<form>
элементы формы
</form>

У формы есть атрибуты, перечислю самые распространенные:

  • name="имя" — Этим атрибутом прописывается имя формы, на мой взгляд не обязательный атрибут, но все же всегда заполняю 
  • action="Ссылка на файл" — Этим атрибутом определяется файл обработчик, а именно файл куда Вы посылаете данные
  • method="post" — Собственно атрибут который говорит форме, что необходимо отправлять post запросы. Так же Вы через формы можете отправлять и get запросы, выставив свойство get а не post.

Давайте создадим форму:

<form action="test.php" method="post" name="form">
элементы формы
</form>

В качестве файла обработчика я поставил файл test.php так как именно в нем пишу для Вас примеры. Метод отправки я поставил post так как именно этим методам пользуются в 99.9% случаях. Так же я присвоил нашей форме имя — form

Теперь окунемся в мир элементов формы. Первым делом Вы должны понять, что почти все элементы являются тегом <input> отличие лишь в атрибуте type у этих тегов. Давайте я перечислю используемые элементы форм:

Я уверен, что вы не раз встречали такие поля, так что тут как говорится: «no comments» 

Теперь давайте составим небольшую тренировочную анкету, с которой будем работать далее. Наша задача составить небольшую анкетку которая поведает нам имя заполнявшего, пол, из какой он страны, любимый цвет и поле текста где пользователь может добавить что-нить о себе. Вот что у меня получилось:

<form action="test.php" method="post" name="form">

Ваше Фамилия Имя Отчество: <input name="fio" type="text" value=""><br><br>

Ваш пол:
М<input name="sex" type="radio" value="Мужской">
Ж<input name="sex" type="radio" value="Женский"><br><br>

Из какой Вы страны

<select name="city">
<option value="Россия"> Россия
<option value="Другая страна"> Другая страна
</select><br><br>

Любимый(ые) цвет(а): <br><br>

Черный: <input type="checkbox" name="color_1" value="Черный">
Красный: <input type="checkbox" name="color_2" value="Красный">
Белый: <input type="checkbox" name="color_3" value="Белый">
Другой: <input type="checkbox" name="color_4" value="Другой"><br><br>

О себе:<br><br>
<textarea cols="40" rows="10" name="about"></textarea><br><br>

<input type="submit" name="submit">

</form>

  • Для поля ФИО я использовал одностроковое поле ввода. Атрибут name обязателен для заполнения, почему? Объясню ниже
  • Для Выбора пола я использовал радио кнопки, заметьте что атрибут name у них один и тот же... Это сделано для того что бы выбрать можно было лишь один пункт.
  • Страна проживания выводится списком, у списка есть атрибут name у пунктов же (<option>) этого атрибута быть не должно.
  • Любимые цвета выбираются чек боксами. Каждый чек бокс имеет свой атрибут name. Сделано для того чтобы выбрать можно было несколько пунктов.
  • О себе принимает вид большого поля. Заметьте, что я использую атрибуты rows и cols. cols определяет сколько видимых символов может влезть по горизонтали, а rows определяет сколько пользователь увидит строк. С помощью этих атрибутов мы определяем ширину и высоту области.
  • Для кнопки, атрибут name не обязателен, но не для этого примера, в этом примере этот атрибут понадобится. Если в теге кнопки написать атрибут value="" и в ведя в этот атрибут, например слово «отправить анкету» (value="отправить анкету") то надпись на кнопке примет значение атрибута value.

Обратите внимание, что почти у каждого тега есть атрибут value, для чего он? В него записываются данные которые Вы собираетесь перенести на другую страницу. Надеюсь понятно

Теперь если запустить этот код в браузере, то мы увидим следующее:

У формы я использовал атрибут action со значением test.php это означает, как я уже говорил, что данные из формы передадутся в файл test.php.

POST запрос

Теперь напишем php код который позволит нам увидеть введенную нами информацию. Где хранятся данные? В случае с get запросом, наши данные лежали в глобальной переменной $_GET['']. При post запросе, данные будут лежать в глобальной переменной $_POST['']. В квадратных скобках, необходимо прописывать, как и в случае с глобальной переменной get, идентификатор. Вопрос, где этот идентификатор взять? Вот для чего нам необходим атрибут name у элементов форм! Именно эти имена и служат нам ключом в глобальном массиве post. Ну что ж, приступим к описанию скрипта:

<?php
if(isset($_POST['submit'])) {
echo "ФИО: ".$_POST['fio']."<br>";
echo "Пол: ".$_POST['sex']."<br>";
echo "Страна проживания: ".$_POST['city']."<br>";

echo "Любимый(ые) цвет(а): <br>";
echo $_POST['color_1']."<br>";
echo $_POST['color_2']."<br>";
echo $_POST['color_3']."<br>";
echo $_POST['color_4']."<br>";
echo "О себе: ".$_POST['about']."<br><br><br>";
}
?>

Написанное нами условие if гласит: Если существует глобальная переменная $_POST['submit'] то выводим данные на экран. Эта глобальная переменная создается в случае если мы нажали на кнопку отправки, вот для чего в данном примере необходим атрибут name в кнопке. Вы вполне можете задаться вопросом, почему же у кнопки атрибут name не обязательный? Все довольно просто. Обычно программист не отслеживает нажатие кнопки, а отслеживает посланные данные. Для корректной работы, например формы контактов, необходимо отследить не нажатие кнопки, а правильность ввода информации, и узнать вводили ли эту информацию вообще. В нашем же примере мы не проверяли посланные данные, а просто отследили нажатие кнопки, для упрощение примера... Вот что у нас получилось:

Заключение

Ну что ж, за сегодня мы разобрали два метода передачи данных между скриптами, так же галопам познакомились с формами. Очень надеюсь, что эта информация Вам хоть где то пригодится. Если есть какие вопросы, или мысли, пишите комментарии. Удачи Вам, на сегодня у меня все!

Передача переменных в PHP. Методы GET и POST

Итак, мы снова продолжаем изучение основ PHP и в этой статье познакомимся со способами передачи переменных в PHP, а именно с методами GET и POST. Каждый из них имеет свои плюсы и минусы, и применяется в соответствующих ситуациях, речь о которых пойдет в данной статье. Мы также рассмотрим примеры кода, которые демонстрируют работу методов POST и GET.

Передача переменных при помощи метода GET

Данный метод передачи переменных применяется в PHP для передачи переменных в файл при помощи адресной строки. То есть переменные передаются сразу через адресную строку браузера. Примером может быть, например, ссылка на статью в WordPress без использования ЧПУ (SEF), которая имеет примерно следующий вид:

https://archive.dmitriydenisov.com/?p=315

То есть в данном случае передается переменная $p со значением 315. Теперь давайте более подробно на примере рассмотрим работу метод GET. Пускай нам нужно передать в файл три переменных $a, $b и $c методом GET и вывести их сумму на экран. Для этого можно использовать следующий код.

$a = $_GET['a'];
 $b = $_GET['b'];
 $c = $_GET['c'];
 $summa = $a + $b + $c;
 echo "Сумма $a + $b + $c = $summa";

Поскольку все переменные перед передачей будут помещаться в глобальный массив GET (Массивы в PHP), то мы первым делом присваиваем нашим переменным значения соответствующих элементов массива GET. Делаем это в самом начале во избежание разнообразных ошибок при передаче переменных. Далее для демонстрации работы прописываем произвольную формулу и выводим результат на экран.

Для проверки работы метода GET достаточно просто добавить к ссылке на файл знак вопроса «?» и через амперсанд «&» перечислить переменные с их значениями. Пускай у нас есть файл get.php, который лежит в корне сайта https://archive.dmitriydenisov.com. Для того чтобы передать в файл переменные, достаточно прописать в адресной строке следующее.

https://archive.dmitriydenisov.com/get.php?a=1&b=2&c=3

Как видно с примера, сначала мы добавляем знак вопроса сразу после названия файла. Далее прописываем переменную и через равно указываем ее значение. После этого через амперсанд аналогичным образом перечисляем другие переменные. Теперь при переходе по этой ссылке нам выведется сумма переменных $a, $b и $c.

Данный способ очень простой и не требует создания дополнительных файлов. Все необходимые данные поступают прямо через адресную строку браузера.

Ну а теперь давайте перейдем ко второму способу передачи переменных в PHP – методу POST.

Передача переменных в PHP при помощи метода POST

Данный способ позволяет скрыто передавать переменные с одного файла в другой. Как вы уже поняли, обычно для этих целей используются два файла. В первом находится форма для ввода исходных данных, а во втором исполнительный файл, который принимает переменные. Для демонстрации давайте рассмотрим следующий код.

Код первого файла с формой для отправки данных. Дадим ему название post-1.php

<!--Форма -->
 <form action="post-2.php" method="post" name="form1" target="_blank">
 <!--Текстовые поля -->
 <p><input name="name" type="text" size="20"></p>
 <p><input name="lastname" type="text" size="20"></p>
 <!--Кнопка -->
 <p><input name="submit" type="submit" value="Передать"></p>
 </form>

Форма:

  • action – указываем файл, в который будут передаваться переменные.
  • method – метод передачи переменных. В нашем случае это метод POST.
  • name – название формы. Одновременно в файл будет передана переменная с таким именем.

Текстовые поля:

  • name – имена переменных. В нашем случае это имя и фамилия (переменные name и lastname).
  • type – тип поля. В нашем случае это текстовое поле.

Кнопка:

  • name – имя кнопки и переменной, которая будет передана вместе с другими переменными.
  • type – тип кнопки. В нашем случае это кнопка для отправки данных.
  • value – текст на кнопке.

Код второго файла, который будет служить приемником переменных. Назовем его post-2.php

$name = $_POST[name];
 $lastname = $_POST[lastname];
 echo "Значения переменных, переданных методом POST - $name и $lastname";

Как и с методом GET, мы первым делом присваиваем переменным значения соответствующих элементов глобального массива POST. Далее для наглядности выводим эти переменные на экран при помощи оператора вывода echo.

Теперь при загрузке первого файла у нас загрузится форма. После введения данных жмем по кнопке «Отправить», в результате чего в новой вкладке у нас откроется страница со вторым файлом, на которой выведутся значения, прописанные в форме на предыдущей странице. То есть второму файлу будут переданы значения переменных с первого файла.

На этом данная статья про передачу переменных в PHP подошла к концу. Если вы не хотите пропустить появления других статей на блоге, рекомендую подписаться на новостную рассылку любым удобным способом в пункте «Подписка» либо воспользоваться формой ниже.

На этом все. Удачи вам и успеха в освоении основ PHP.