pythonhttplib2
Ⅰ 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– 可視化爬蟲
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對象
xpinyin– 將中國漢字轉為拼音
tablib– 數據導出為XLS、CSV、JSON、等格式的模塊
textract– 從文件中提取文本
messytables– 解析表格數據
rows– 常用數據介面
Office
python-docx– 讀取,查詢和修改docx文件
xlwt/xlrd– 從Excel文件讀取寫入數據和格式信息
PDF
Markdown
Python-Markdown– 一個用Python實現的John Gruber的Markdown。
3、HTML/XML解析方面:
4、文件處理方面:
Ⅳ 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端是否對這兩種請求做了不同的處理,如果沒有區分的話,兩種請求也就沒有區別