當前位置:首頁 » 編程語言 » pythonhttplib2

pythonhttplib2

發布時間: 2022-06-09 23:06:41

python怎樣用httplib2來POST多個值

#-*-coding:utf-8-*-
fromurllibimporturlencode
importhttplib2

data={"name":"zhangsan","age":10}
h=httplib2.Http()
resp,content=h.request("www..com","POST",urlencode(data))
printcontent

如果解決了您的問題請採納!
如果未解決請繼續追問

Ⅱ python的httplib,urllib和urllib2的區別及用

宗述
首先來看一下他們的區別
urllib和urllib2
urllib 和urllib2都是接受URL請求的相關模塊,但是urllib2可以接受一個Request類的實例來設置URL請求的headers,urllib僅可以接受URL。
這意味著,你不可以偽裝你的User Agent字元串等。
urllib提供urlencode方法用來GET查詢字元串的產生,而urllib2沒有。這是為何urllib常和urllib2一起使用的原因。
目前的大部分http請求都是通過urllib2來訪問

httplib
httplib實現了HTTP和HTTPS的客戶端協議,一般不直接使用,在更高層的封裝模塊中(urllib,urllib2)使用了它的http實現。

urllib簡單用法
urllib.urlopen(url[, data[, proxies]]) :
[python] view plain

google = urllib.urlopen('')
print 'http header:/n', google.info()
print 'http status:', google.getcode()
print 'url:', google.geturl()
for line in google: # 就像在操作本地文件
print line,
google.close()

詳細使用方法見
urllib學習

urllib2簡單用法
最簡單的形式
import urllib2
response=urllib2.urlopen(')
html=response.read()

實際步驟:
1、urllib2.Request()的功能是構造一個請求信息,返回的req就是一個構造好的請求
2、urllib2.urlopen()的功能是發送剛剛構造好的請求req,並返回一個文件類的對象response,包括了所有的返回信息。
3、通過response.read()可以讀取到response裡面的html,通過response.info()可以讀到一些額外的信息。
如下:

#!/usr/bin/env python
import urllib2
req = urllib2.Request("")
response = urllib2.urlopen(req)
html = response.read()
print html

有時你會碰到,程序也對,但是伺服器拒絕你的訪問。這是為什麼呢?問題出在請求中的頭信息(header)。 有的服務端有潔癖,不喜歡程序來觸摸它。這個時候你需要將你的程序偽裝成瀏覽器來發出請求。請求的方式就包含在header中。
常見的情形:

import urllib
import urllib2
url = '
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'# 將user_agent寫入頭信息
values = {'name' : 'who','password':'123456'}
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()

values是post數據
GET方法
例如網路:
,這樣我們需要將{『wd』:』xxx』}這個字典進行urlencode

#coding:utf-8
import urllib
import urllib2
url = ''
values = {'wd':'D_in'}
data = urllib.urlencode(values)
print data
url2 = url+'?'+data
response = urllib2.urlopen(url2)
the_page = response.read()
print the_page

POST方法

import urllib
import urllib2
url = ''
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' //將user_agent寫入頭信息
values = {'name' : 'who','password':'123456'} //post數據
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values) //對post數據進行url編碼
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()

urllib2帶cookie的使用

#coding:utf-8
import urllib2,urllib
import cookielib

url = r''

#創建一個cj的cookie的容器
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
#將要POST出去的數據進行編碼
data = urllib.urlencode({"email":email,"password":pass})
r = opener.open(url,data)
print cj

httplib簡單用法
簡單示例

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import httplib
import urllib

def sendhttp():
data = urllib.urlencode({'@number': 12524, '@type': 'issue', '@action': 'show'})
headers = {"Content-type": "application/x-www-form-urlencoded",
"Accept": "text/plain"}
conn = httplib.HTTPConnection('bugs.python.org')
conn.request('POST', '/', data, headers)
httpres = conn.getresponse()
print httpres.status
print httpres.reason
print httpres.read()

if __name__ == '__main__':
sendhttp()

具體用法見
httplib模塊
python 3.x中urllib庫和urilib2庫合並成了urllib庫。其中、
首先你導入模塊由
import urllib
import urllib2
變成了
import urllib.request

然後是urllib2中的方法使用變成了如下
urllib2.urlopen()變成了urllib.request.urlopen()
urllib2.Request()變成了urllib.request.Request()

urllib2.URLError 變成了urllib.error.URLError
而當你想使用urllib 帶數據的post請求時,
在python2中
urllib.urlencode(data)

而在python3中就變成了
urllib.parse.urlencode(data)

腳本使用舉例:
python 2中

import urllib
import urllib2
import json
from config import settings
def url_request(self, action, url, **extra_data): abs_url = "http://%s:%s/%s" % (settings.configs['Server'],
settings.configs["ServerPort"],
url)
if action in ('get', 'GET'):
print(abs_url, extra_data)
try:
req = urllib2.Request(abs_url)
req_data = urllib2.urlopen(req, timeout=settings.configs['RequestTimeout'])
callback = req_data.read()
# print "-->server response:",callback
return callback

except urllib2.URLError as e:
exit("\033[31;1m%s\033[0m" % e)
elif action in ('post', 'POST'):
# print(abs_url,extra_data['params'])
try:
data_encode = urllib.urlencode(extra_data['params'])
req = urllib2.Request(url=abs_url, data=data_encode)
res_data = urllib2.urlopen(req, timeout=settings.configs['RequestTimeout'])
callback = res_data.read()
callback = json.loads(callback)
print("\033[31;1m[%s]:[%s]\033[0m response:\n%s" % (action, abs_url, callback))
return callback
except Exception as e:
print('---exec', e)
exit("\033[31;1m%s\033[0m" % e)

python3.x中

import urllib.request
import json
from config import settings

def url_request(self, action, url, **extra_data):
abs_url = 'http://%s:%s/%s/' % (settings.configs['ServerIp'], settings.configs['ServerPort'], url)
if action in ('get', 'Get'): # get請求
print(action, extra_data)try:
req = urllib.request.Request(abs_url)
req_data = urllib.request.urlopen(req, timeout=settings.configs['RequestTimeout'])
callback = req_data.read()
return callback
except urllib.error.URLError as e:
exit("\033[31;1m%s\033[0m" % e)
elif action in ('post', 'POST'): # post數據到伺服器端
try:
data_encode = urllib.parse.urlencode(extra_data['params'])
req = urllib.request.Request(url=abs_url, data=data_encode)
req_data = urllib.request.urlopen(req, timeout=settings.configs['RequestTimeout'])
callback = req_data.read()
callback = json.loads(callback.decode())
return callback
except urllib.request.URLError as e:
print('---exec', e)
exit("\033[31;1m%s\033[0m" % e)

settings配置如下:

configs = {
'HostID': 2,
"Server": "localhost",
"ServerPort": 8000,
"urls": {

'get_configs': ['api/client/config', 'get'], #acquire all the services will be monitored
'service_report': ['api/client/service/report/', 'post'],

},
'RequestTimeout': 30,
'ConfigUpdateInterval': 300, # 5 mins as default

}

Ⅲ python十大必學模塊是什麼

這個不能一概而論的,據說python目前高達27萬+個庫,看你學習的方向必學模塊也有不同,簡單列舉:

1、網路通用方面:

  • urllib-網路庫

  • requests-網路庫

  • pycurl– 網路庫

  • httplib2– 網路庫

  • RoboBrowser– 瀏覽網頁

  • MechanicalSoup-一個與網站自動交互Python庫

  • socket– 底層網路介面

    2、爬蟲方面:

  • grab– 爬蟲框架

  • scrapy– 網路爬蟲框架,不支持Python3

  • pyspider–爬蟲系統。

  • cola– 爬蟲框架

  • portia– 可視化爬蟲

  • 3、HTML/XML解析方面:

  • lxml– 高效HTML/ XML處理庫

  • cssselect– 解析DOM樹和CSS選擇器。

  • pyquery– 解析DOM樹和jQuery選擇器。

  • html5lib– 根據WHATWG規范生成HTML/ XML文檔的DOM

  • feedparser– 解析RSS/ATOM feeds。

  • MarkupSafe– 為XML/HTML/XHTML提供了安全轉義的字元串。

  • xhtml2pdf– 將HTML/CSS轉換為PDF。

  • untangle– XML文件轉Python對象

  • 4、文件處理方面:

  • xpinyin– 將中國漢字轉為拼音

  • tablib– 數據導出為XLS、CSV、JSON、等格式的模塊

  • textract– 從文件中提取文本

  • messytables– 解析表格數據

  • rows– 常用數據介面

  • Office

  • python-docx– 讀取,查詢和修改docx文件

  • xlwt/xlrd– 從Excel文件讀取寫入數據和格式信息

  • PDF

  • Markdown

  • Python-Markdown– 一個用Python實現的John Gruber的Markdown。

Ⅳ python http 連接問題,urllib2和httplib2

都沒把問題描述清楚,相幫也幫不了。

Ⅳ 求一個Python工具中httplib2庫的詳細說明

https://github.com/jcgregorio/httplib2 lib庫主頁

Ⅵ python爬蟲需要安裝哪些庫

一、 請求庫

1. requests
requests 類庫是第三方庫,比 Python 自帶的 urllib 類庫使用方便和

2. selenium
利用它執行瀏覽器動作,模擬操作。
3. chromedriver
安裝chromedriver來驅動chrome。

4. aiohttp
aiohttp是非同步請求庫,抓取數據時可以提升效率。

二、 解析庫
1. lxml
lxml是Python的一個解析庫,支持解析HTML和XML,支持XPath的解析方式,而且解析效率非常高。
2. beautifulsoup4
Beautiful Soup可以使用它更方便的從 HTML 文檔中提取數據。

3. pyquery
pyquery是一個網頁解析庫,採用類似jquery的語法來解析HTML文檔。
三、 存儲
1. mysql
2. mongodb
3. redis
四、 爬蟲框架scrapy
Scrapy 是一套非同步處理框架,純python實現的爬蟲框架,用來抓取網頁內容以及各種圖片
需要先安裝scrapy基本依賴庫,比如lxml、pyOpenSSL、Twisted

Ⅶ Python菜鳥提問,httplib和urllib2有什麼區別

httplib包實現http和https協議請求的客戶端,通常不直接使用
urllib包和urllib2包基於httplib包之上,提供高層次的抽象,用於處理url請求

Ⅷ 請教個python httplib2傳遞參數問題

樓主的理解沒有問題啊
.
python中函數的實參傳遞規則是:
標注了參數名的就要按參數名傳遞,打亂順序的情況下一定要加參數名,否則會混亂的。
沒有預設的實參情況下就會依次傳遞,如果不夠的話,後面的會自動去取自己的預設值。
如果實參的數量比

Ⅸ python httplib2 urllib區別

功能上沒什麼區別吧,httlib2比urllib更進一步把,比如在長鏈接支持方面,運行速度方面更優越一點兒,適用情況差不多。
個人感覺pycurl更強大一點。

Ⅹ python中ihttplib,httplib2,urllib2在http請求時哪個更快

= time.time()

httplib2.Http().request(url)
t6 = time.time()
http2 = t6-t5

t3 = time.time()
req = httplib.HTTPConnection(com')
req.request('GET', '/')
t4 = time.time()
http = t4-t3


t1 = time.time()
urllib2.urlopen(url)
t2 = time.time()
urll = t2-t1

print http2
print httpprint urll

結果:
0.156999826431
0.0150001049042
0.0780000686646
我寫了如上代碼測試的時候通常都是httplib的速度較快.實際過程中也是如此嗎?還是我測試的不對。還有head請求與get請求,為什麼head請求測試的時候感覺並沒有節省時間呢。我想寫爬蟲程序,希望速度能更快。

不知道你做了多少次重復的測試呢,單憑一次的測試結果不說明任何問題,我覺得有以下幾點可以說明

  • 抓取網頁的時間很多取決於http連接建立和數據傳輸的時間,所以網路狀況的影響很大,如果每次都是重新建立連接,和採用什麼python庫關系不大

  • urllib3可以復用tcp連接來進行多次http請求,所以可以省掉重新建立tcp的時間;requests會檢查是否安裝了urllib3。

  • head/get請求的時間取決於你請求的server端是否對這兩種請求做了不同的處理,如果沒有區分的話,兩種請求也就沒有區別

熱點內容
php的特點與優勢 發布:2025-02-08 02:43:16 瀏覽:717
微信公眾號怎麼上傳pdf 發布:2025-02-08 02:42:41 瀏覽:346
安卓如何查看通話總時長 發布:2025-02-08 02:27:49 瀏覽:578
快速dct演算法 發布:2025-02-08 02:19:04 瀏覽:622
淘寶交易密碼如何改 發布:2025-02-08 02:17:32 瀏覽:775
php的進階 發布:2025-02-08 02:17:28 瀏覽:677
伺服器關閉中或IP地址錯誤 發布:2025-02-08 02:16:55 瀏覽:479
節目腳本是什麼 發布:2025-02-08 02:08:54 瀏覽:144
android的自定義屬性 發布:2025-02-08 02:07:27 瀏覽:608
怎麼看電腦的用戶名和密碼 發布:2025-02-08 02:02:48 瀏覽:796