python網路程式設計100例 python網路程式設計

2021-10-11 00:10:01 字數 3762 閱讀 2742

一.urllib模組介紹

import urllib

先看個小例子,列印結果為乙個socket連線

示例一:import urllib

url=r''

fp=urllib.urlopen(url)

print fp

1.基本操作

urlopen返回物件提供方法

read(),readline(),readlines(),close() 這些方法的使用方法與檔案物件完全一樣

info() 返回乙個httplib.httpmessage物件,表示遠端伺服器返回的頭資訊

getcode() 返回http狀態碼,如果是http請求,200請求成功完成,404請求**未找到

geturl() 返回請求的url

示例二:import urllib

url=r''

fp=urllib.urlopen(url)

#print fp.read() #列印網頁內容,相當於乙個大的字串,和右鍵檢視網頁源**效果一樣

#print fp.readline() #列印一行內容,是乙個元素

#print fp.readlines() #全部內容以列表的形式列印出來

print fp.info() #列印頭資訊

print fp.getcode() #列印返回狀態碼

print fp.geturl() #列印請求的url

fp.close() #關閉連線

2.urllib.urlretrieve

臨時存放 urllib.urlretrieve(url)

本地存放 urllib.urlretrieve(url,'檔案的絕對路徑')

示例三:import urllib

url=r''

filename=urllib.urlretrieve(url)

print type(filename) #元組型別

print filename #第乙個引數為臨時檔案路徑,第二個引數表示伺服器的響應頭資訊

filename1=urllib.urlretrieve(url,'baidu.html') #在統計目錄下生成乙個baidu.html檔案

3.urllib.urlcleanup()

清除由於urllib.urlretrieve()所產生的快取

4.urllib.quot 和urllib.quote_plus

區別在於是否解碼符號/

示例四:import urllib

url=r'/!@#/'

#url編碼

print urllib.quote(url)

print urllib.quote_plus(url)

#url解碼

5.urllib傳送get和post請求

①get是從伺服器上獲取資料,post是向伺服器傳送資料;

②get是把引數資料佇列加到提交表單的action屬性所指的url中,值和表單內各個字段一一對應,在url中可以看到。post是通過http post機制,將表單內各個字段與其內容放置在html header內一起傳送到action屬性所指的url位址。使用者看不到這個過程;

③對於get方式,伺服器端用request.querystring獲取變數的值,對於post方式,伺服器端用request.form獲取提交的資料;

④get傳送的資料量較小,不能大於2kb。post傳送的資料量較大,一般被預設為不受限制。但理論上,iis4中最大量為80kb,iis5中為100kb;

⑤get安全性非常低,post安全性較高。但是執行效率卻比post方法好。

建議:①get方式的安全性較post方式要差些,包含機密資訊的話,建議用post資料提交方式;

②在做資料查詢時,建議用get方式;而在做資料新增、修改或刪除時,建議用post方式。

示例五:

假設我們本地有一段test.php**如下:<?php

print_r("get params:\n");

var_dump($_get);

print_r("post params:\n");

var_dump($_post);

現在傳送get和post請求:import urllib

url=r''

get_params=urllib.urlencode()

post_params=urllib.urlencode()

#print get_params,type(get_params) #age=25&name=zhzhgo

fp=urllib.urlopen(url+"?"+get_params,post_params)

print fp.read()

get params:

array(2) {

["age"]=>

string(2) "25"

["name"]=>

string(6) "zhzhgo"

post params:

array(2) {

["i"]=>

string(1) "1"

["j"]=>

string(1) "2"

二.urllib2模組

urllib與urllib2需要配合使用,區別如下:

①urllib2可以接受request類來設定url請求的headers,urllib僅可以接受url;

②urllib提供urlencode方法生成請求引數字串,urllib2沒有;

③urllib2僅有quote無quote_plus相關方法;

④urllib2無urlretrieve方法。

示例六:#應用urllib2接受request類來設定url請求的headers來跳過登陸

import urllib,urllib2

import base64

url=r''

#strip()預設刪除空白符,此時刪除換行符(包括'\n','\r','\t',' ')

base64string=base64.encodestring('admin:123456').strip()

authheader="basic "+base64string

req=urllib2.request(url)

req.add_header('authorization',authheader)

urllib2.urlopen(req)

三.urlparse模組

urlparse模組主要是把url拆分為6部分,並返回元組

示例七:import urlparse

程式設計練習100例 8,9,10

99乘法口訣表 要求1的一行。2的一行 foriinrange 1,10 forjinrange 1,10 print d d 2d i,j,i j end end讓1的結束以後另起一行 print print n 左上三角形 foriinrange 1,10 forjinrange i,10 注意...

程式設計練習100例 16

importtime importdatetime if name main print datetime.date.today strftime d m y 今天日期 python 的datetime模組 其實就是date和time 模組的結合,常見的屬性方法都比較常用比如 datetime.da...

程式設計練習100例 31 32 33

31 獲取 星期幾的第乙個字母來判斷一下是星期幾 若果第乙個字母一樣,繼續判斷第二個字母 usr bin python coding utf 8 letter input please input ifletter s print 請輸入第二個字母 letter input please input...