python学习之利用urllib和urllib2访问http的GET/POST详解
前言
本文主要给大家介绍了关于python如何学习访问http的GET/POST的相关内容,使用urllib和urllib2,可以轻松实现对http的访问,下面话不多说了,来一起看看详细的介绍吧。
示例详解
以下给个例子,实现对http://127.0.0.1/cgi/test的GET与POST
使用的是平常意义上的query string
POST接受json
推荐学习《Python视频教程》
其中,
urllib2的Request方法如果只带一个参数是GET方法,但如果带两个参数,则为http的POST方法,第二个参数为POST的内容。
#!/usr/bin/env python
import urllib
import urllib2
import json
url_base = "http://127.0.0.1/cgi/test"
#GET
try:
query = {'test':'yes','name':'colin'}
query_string = urllib.urlencode(query)
url = url_base+"?"+query_string
print "GET", url
print "web output:"
print urllib2.urlopen(urllib2.Request(url)).read()
except Exception as err:
print err
#post
try:
url = url_base
print "POST", url
a = {'k1':123, 'k2': '456', 'k3':'test'}
json_s = json.dumps(a)
print "POST input:"
print json_s
print "web output:"
print urllib2.urlopen(urllib2.Request(url, json_s)).read()
except Exception as err:
print err
test用bash编写,如下所示,其中jq是处理json的命令,需要下载一下,bash/sed/awk应该都是系统自带
#!/bin/bash
echo -e 'Content-type:text/plain\r'
echo -e '\r'
if [ X"$REQUEST_METHOD" = X"POST" ];then
jq . | sed -nr '/:/!d; s/^([ \t]*"[^"]+"[ \t]*):/\1=/;s/,[ \t]*$//;s/"//g;p'
else
echo ${QUERY_STRING} | awk 'BEGIN{RS="&"}1'
fi
随便用什么webserver都可以,只要支持CGI,我这里用是一个很轻量的webserver——boa,它可能不适合大型应用网站,但嵌入式里用CGI提供API还是很有用的,部署非常容易。
搭建之后,测试一下
$ ./test.py
GET http://127.0.0.1/v1/lic/test?test=yes&name=colin
web output:
test=yes
name=colin
POST http://127.0.0.1/v1/lic/test
POST input:
{"k3": "test", "k2": "456", "k1": 123}
web output:
k3= test
k2= 456
k1= 123
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
Atas ialah kandungan terperinci python学习之利用urllib和urllib2访问http的GET/POST详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Sebab ralat adalah NameResolutionError(self.host,self,e)daripada, yang merupakan jenis pengecualian dalam pustaka urllib3 Sebab ralat ini adalah bahawa resolusi DNS gagal, iaitu nama hos atau alamat IP yang telah cuba diselesaikan tidak dapat ditemui. Ini mungkin disebabkan oleh alamat URL yang dimasukkan tidak betul atau pelayan DNS tidak tersedia buat sementara waktu. Bagaimana untuk menyelesaikan ralat ini Mungkin terdapat beberapa cara untuk menyelesaikan ralat ini: Semak sama ada alamat URL yang dimasukkan adalah betul dan pastikan ia boleh diakses Pastikan pelayan DNS tersedia, anda boleh cuba menggunakan arahan "ping" dalam baris arahan untuk menguji sama ada pelayan DNS tersedia Cuba akses tapak web menggunakan alamat IP dan bukannya nama hos jika di belakang proksi

Sebab ralat ialah ralat ProxySchemeUnknown(proxy.scheme) urllib3 biasanya disebabkan oleh penggunaan protokol proksi yang tidak disokong. Dalam kes ini, urllib3 tidak mengenali jenis protokol pelayan proksi dan oleh itu tidak boleh menggunakan proksi untuk sambungan rangkaian. Untuk menyelesaikan isu ini, anda perlu memastikan bahawa anda menggunakan protokol proksi yang disokong, seperti HTTP atau https Cara menyelesaikan Untuk menyelesaikan isu ini, anda perlu memastikan bahawa anda menggunakan protokol proksi yang disokong, seperti HTTP atau HTTPS . Anda boleh menyelesaikan masalah ini dengan menetapkan parameter proksi urllib3. Jika anda menggunakan proksi http, contoh kod adalah seperti berikut: importurllib3http

Cara menggunakan fungsi urllib.request.urlopen() dalam Python3.x untuk menghantar permintaan GET Dalam pengaturcaraan rangkaian, kita selalunya perlu mendapatkan data daripada pelayan jauh dengan menghantar permintaan HTTP. Dalam Python, kita boleh menggunakan fungsi urllib.request.urlopen() dalam modul urllib untuk menghantar permintaan HTTP dan mendapatkan respons yang dikembalikan oleh pelayan. Artikel ini akan memperkenalkan cara menggunakan

Cara menggunakan fungsi urllib.request.urlopen() dalam Python3.x untuk menghantar permintaan POST Dalam pengaturcaraan rangkaian, selalunya perlu menghantar permintaan POST melalui protokol HTTP untuk berinteraksi dengan pelayan. Python menyediakan fungsi urllib.request.urlopen() untuk menghantar pelbagai permintaan HTTP, termasuk permintaan POST. Artikel ini akan memperkenalkan secara terperinci cara menggunakan urllib.request.urlop

Menggunakan bahasa Python boleh membantu semua orang mempelajari Python dengan lebih baik. Fungsi yang disediakan oleh urllib adalah untuk menggunakan program untuk melaksanakan pelbagai permintaan HTTP. Jika anda ingin mensimulasikan penyemak imbas untuk melengkapkan fungsi tertentu, anda perlu menyamar permintaan itu sebagai penyemak imbas. Kaedah penyamaran adalah dengan terlebih dahulu memantau permintaan yang dihantar oleh penyemak imbas, dan kemudian menyamarkannya berdasarkan pengepala permintaan pelayar Pengepala Ejen Pengguna digunakan untuk mengenal pasti penyemak imbas.

1. Gambaran keseluruhan urllib: urllib ialah perpustakaan standard rasmi untuk meminta sambungan URL dalam Python Setelah anda memasang python, perpustakaan ini pada asasnya meliputi fungsi permintaan rangkaian. Dalam Python2, mereka terutamanya urllib dan urllib2, dan dalam Python3, mereka disepadukan ke dalam urllib. urllib2 telah digabungkan menjadi urllib dalam Python3.x, dan kemudian pakej itu dibahagikan kepada empat modul berikut: urllib.request: Ia adalah modul permintaan http paling asas, digunakan untuk mensimulasikan permintaan penghantaran urllib.error: Modul pengendalian pengecualian, jika ralat berlaku tangkap pengecualian ini urllib

Anda boleh mempelajari asas -asas Python dalam masa dua jam. 1. Belajar pembolehubah dan jenis data, 2. Struktur kawalan induk seperti jika pernyataan dan gelung, 3 memahami definisi dan penggunaan fungsi. Ini akan membantu anda mula menulis program python mudah.

Dengan melabur 2 jam pembelajaran python setiap hari, anda dapat meningkatkan kemahiran pengaturcaraan anda dengan berkesan. 1. Ketahui Pengetahuan Baru: Baca dokumen atau tutorial menonton. 2. Amalan: Tulis kod dan latihan lengkap. 3. Kajian: Menyatukan kandungan yang telah anda pelajari. 4. Amalan Projek: Sapukan apa yang telah anda pelajari dalam projek sebenar. Pelan pembelajaran berstruktur seperti ini dapat membantu anda menguasai Python secara sistematik dan mencapai matlamat kerjaya.
