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

cookielibpython3

發布時間: 2022-05-26 02:36:43

python3 解決最少加50分 決不食言

拋磚引玉

import cookielib
import urllib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
#登錄
request = urllib2.Request(url)
response = opener.open(request)
cj.extract_cookies(response, request)
...
#訪問其它頁面
request = urllib2.Request(url)
cj.add_cookie_header(request)
response = opener.open(request)
...

⑵ 求教python缺少cookielib模塊怎麼辦

如果是python2 就不缺
如果是python3 修改為http.cookiejar
The cookielib mole has been renamed to http.cookiejar in Python 3

⑶ python3和python2的區別

一些對應常見的例子:

1. 統一了字元編碼支持。我特意把它拿出來放在第一條...
2. 增加了新的語法。print/exec等成為了函數,格式化字元串變數,類型標注,添加了nonlocal、yield from、async/await、yield for關鍵詞和__annotations__、__context__、__traceback__、__qualname__等nder方法。
3. 修改了一些語法。metaclass,raise、map、filter以及dict的items/keys/values方法返回迭代對象而不是列表,描述符協議,保存類屬性定義順序,保存關鍵字參數順序
4. 去掉了一些語法。cmp、<>(也就是!=)、xrange(其實就是range)、不再有經典類
5. 增加一些新的模塊。concurrent.futures、venv、unittest.mock、asyncio、selectors、typing等
6. 修改了一些模塊。主要是對模塊添加函數/類/方法(如functools.lru_cache、threading.Barrier)或者參數。
7. 模塊改名。把一些相關的模塊放進同一個包裡面(如httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib放進了http裡面,urllib, urllib2, urlparse, robotparse放進了urllib裡面),個例如SocketServer改成了socketserver,Queue改成queue等
8. 去掉了一些模塊或者函數。gopherlib、md5、contextlib.nested、inspect.getmoleinfo等。去掉的內容的原因主要是2點:1. 過時的技術產物,已經沒什麼人在用了;2. 出現了新的替代產物後者被證明存在意義不大。理論上對於開發者影響很小。
9. 優化。重新實現了dict可以減少20%-25%的內存使用;提升pickle序列化和反序列化的效率;collections.OrderedDict改用C實現;通過os.scandir對glob模塊中的glob()及iglob()進行優化,使得它們現在大概快了3-6倍等.. 這些都是喜大普奔的好消息,同樣開發者不需要感知,默默的就會讓結果變得更好。
10. 其他。構建過程、C的API、安全性等方面的修改,通常對於開發者不需要關心。
最後,重提一下我經常說的那句話:
Python 2/3的思想基本是共通的,只有少量的語法有差別甚至不兼容。當對Python熟悉到
一定程度時, 即使只會Python 2也可以在很短的時間就能寫Python 3的代碼。

⑷ python3和Python2的區別

你應該是剛接觸Python吧,建議直接學Python3.x

下面是Python2.x與3.x版本區別:

Python的3.0版本,常被稱為Python 3000,或簡稱Py3k。相對於Python的早期版本,這是一個較大的升級。

為了不帶入過多的累贅,Python 3.0在設計的時候沒有考慮向下相容。

許多針對早期Python版本設計的程式都無法在Python 3.0上正常執行。

為了照顧現有程式,Python 2.6作為一個過渡版本,基本使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,允許使用部分Python 3.0的語法與函數。

新的Python程式建議使用Python 3.0版本的語法。

除非執行環境無法安裝Python 3.0或者程式本身使用了不支援Python 3.0的第三方庫。目前不支援Python 3.0的第三方庫有Twisted, py2exe, PIL等。

大多數第三方庫都正在努力地相容Python 3.0版本。即使無法立即使用Python 3.0,也建議編寫相容Python 3.0版本的程式,然後使用Python 2.6, Python 2.7來執行。

Python 3.0的變化主要在以下幾個方面:

1.print 函數

print語句沒有了,取而代之的是print()函數。 Python 2.6與Python 2.7部分地支持這種形式的print語法。在Python 2.6與Python 2.7裡面,以下三種形式是等價的:

print"fish"
print("fish")#注意print後面有個空格
print("fish")#print()不能帶有任何其它參數

然而,Python 2.6實際已經支持新的print()語法:

from__future__importprint_function
print("fish","panda",sep=',')

2.Unicode(這是一個極其好的改進)

Python 2 有 ASCII str() 類型,unicode() 是單獨的,不是 byte 類型。

現在, 在 Python 3,我們最終有了 Unicode (utf-8) 字元串,以及一個位元組類:byte 和 bytearrays。

由於 Python3.X 源碼文件默認使用utf-8編碼,這就使得以下代碼是合法的:

>>>中國='china'
>>>print(中國)
china

Python 2.x

>>>str="我愛北京天安門"
>>>str
''
>>>str=u"我愛北京天安門"
>>>str
u''

Python 3.x

>>>str="我愛北京天安門"
>>>str
'我愛北京天安門'

3.除法運算

Python中的除法較其它語言顯得非常高端,有套很復雜的規則。Python中的除法有兩個運算符,/和//

首先來說/除法:

在python 2.x中/除法就跟我們熟悉的大多數語言,比如Java啊C啊差不多,整數相除的結果是一個整數,把小數部分完全忽略掉,浮點數除法會保留小數點的部分得到一個浮點數的結果。

在python 3.x中/除法不再這么做了,對於整數之間的相除,結果也會是浮點數。

Python 2.x:

>>>1/2
0
>>>1.0/2.0
0.5

Python 3.x:

>>>1/2
0.5

而對於//除法,這種除法叫做floor除法,會對除法的結果自動進行一個floor操作,在python 2.x和python 3.x中是一致的。

python 2.x

>>>-1//2
-1

python 3.x:

>>>-1//2
-1

注意的是並不是舍棄小數部分,而是執行floor操作,如果要截取小數部分,那麼需要使用math模塊的trunc函數

python 3.x:

>>>importmath
>>>math.trunc(1/2)
0
>>>math.trunc(-1/2)
0

4.異常

在 Python 3 中處理異常也輕微的改變了,在 Python 3 中我們現在使用 as 作為關鍵詞。

捕獲異常的語法由except exc, var改為except exc as var。

使用語法except (exc1, exc2) as var可以同時捕獲多種類別的異常。 Python 2.6已經支持這兩種語法。

  • 1. 在2.x時代,所有類型的對象都是可以被直接拋出的,在3.x時代,只有繼承自BaseException的對象才可以被拋出。

  • 2. 2.x raise語句使用逗號將拋出對象類型和參數分開,3.x取消了這種奇葩的寫法,直接調用構造函數拋出對象即可。

在2.x時代,異常在代碼中除了表示程序錯誤,還經常做一些普通控制結構應該做的事情,在3.x中可以看出,設計者讓異常變的更加專一,只有在錯誤發生的情況才能去用異常捕獲語句來處理。

5.xrange

在 Python 2 中 xrange() 創建迭代對象的用法是非常流行的。比如: for 循環或者是列表/集合/字典推導式。

這個表現十分像生成器(比如。"惰性求值")。但是這個 xrange-iterable 是無窮的,意味著你可以無限遍歷。

由於它的惰性求值,如果你不得僅僅不遍歷它一次,xrange() 函數 比 range() 更快(比如 for 循環)。盡管如此,對比迭代一次,不建議你重復迭代多次,因為生成器每次都從頭開始。

在 Python 3 中,range() 是像 xrange() 那樣實現以至於一個專門的 xrange() 函數都不再存在(在 Python 3 中 xrange() 會拋出命名異常)。

importtimeit
n=10000
deftest_range(n):
returnforiinrange(n):
pass
deftest_xrange(n):
foriinxrange(n):
pass

Python 2

print'Python',python_version()
print' timingrange()'
%timeittest_range(n)
print' timingxrange()'
%timeittest_xrange(n)
Python2.7.6
timingrange()
1000loops,bestof3:433µsperloop
timingxrange()
1000loops,bestof3:350µsperloop

Python 3

print('Python',python_version())
print(' timingrange()')
%timeittest_range(n)
Python3.4.1
timingrange()
1000loops,bestof3:520µsperloop
print(xrange(10))
---------------------------------------------------------------------------
NameErrorTraceback(mostrecentcalllast)
<ipython-input-5-5d8f9b79ea70>in<mole>()
---->1print(xrange(10))
NameError:name'xrange'isnotdefined

6.八進制字面量表示

八進制數必須寫成0o777,原來的形式0777不能用了;二進制必須寫成0b111。

新增了一個bin()函數用於將一個整數轉換成二進制字串。 Python 2.6已經支持這兩種語法。

在Python 3.x中,表示八進制字面量的方式只有一種,就是0o1000。

python 2.x

>>>0o1000
512
>>>01000
512

python 3.x

>>>01000
File"<stdin>",line1
01000
^
SyntaxError:invalidtoken
>>>0o1000
512

7.不等運算符

Python 2.x中不等於有兩種寫法 != 和 <>

Python 3.x中去掉了<>, 只有!=一種寫法,還好,我從來沒有使用<>的習慣

8.去掉了repr表達式``

Python 2.x 中反引號``相當於repr函數的作用

Python 3.x 中去掉了``這種寫法,只允許使用repr函數,這樣做的目的是為了使代碼看上去更清晰么?不過我感覺用repr的機會很少,一般只在debug的時候才用,多數時候還是用str函數來用字元串描述對象。

defsendMail(from_:str,to:str,title:str,body:str)->bool:
pass

9.多個模塊被改名(根據PEP8)

>>>s=b.decode()
>>>s
'china'
>>>b1=s.encode()
>>>b1
b'china'

3)dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函數都被廢棄。同時去掉的還有 dict.has_key(),用 in替代它吧 。

⑸ python3模擬登錄有哪些情況

使用谷歌瀏覽器F12查看登錄請求內容

1.request header需要參數:User-Agent、Referer等。

2.post內容。

python 3.x中urllib庫和urilib2庫合並成了urllib庫。
urllib2.urlopen()變成了urllib.request.urlopen()
urllib2.Request()變成了urllib.request.Request()
cookielib 模塊-》http.cookiejar

#!/usr/bin/envpython
#-*-coding:gb2312-*-
#__author__="zhaowei"
'''
python3.4

模擬登錄鄭州公積金網站,查詢繳存至月份。
'''

fromhtml.parserimportHTMLParser
importurllib
importhttp.cookiejar
importstring
importre

hosturl='http://www.zzgjj.com/index.asp'
posturl='http://www.zzgjj.com/user/login.asp'

cj=http.cookiejar.CookieJar()
cookie_support=urllib.request.HTTPCookieProcessor(cj)
opener=urllib.request.build_opener(cookie_support,urllib.request.HTTPHandler)
urllib.request.install_opener(opener)
h=urllib.request.urlopen(hosturl)

headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64;rv:38.0)Gecko/20100101Firefox/38.0',
'Referer':'http://www.zzgjj.com/index.asp'}

postData={'selectlb':'1',#登錄模式,身份證2,賬號1
'username':'1423141234',#公積金賬號
'radename':'趙威',#姓名
'mm':'88888',#密碼
'submit322':'確認'#固定值
}
postData=urllib.parse.urlencode(postData,encoding='gb2312').encode('gb2312')
#因為post裡面有中文,因此需要先把url經過gb2312編碼處理,然後再把請求編碼為gb2312位元組碼(post必須是位元組碼)。

request=urllib.request.Request(posturl,postData,headers)
response=urllib.request.urlopen(request)
text=response.read()
html=text.decode('gb2312')
hgjj_last_data=re.findall('<td><p>繳至月份:</p>(s*)</td>(s*)<td>(.*?)</td>',html)
#使用正則表達式匹配繳至月份
print(hgjj_last_data[0][2])

⑹ python3 爬蟲怎麼設置cookies

都是要使用requests這個神級模塊,你可以讓requests自己處理完全可以,當然也可以一步步設置cookies當然也是可以的,詳細的可以參考文檔http://docs.python-requests.org/zh_CN/latest/

⑺ python3中如何使用cookie python2中有個cookielib 在python3中應該怎麼使用

我通常是使用request這個開放的庫。裡面有cookielib的具體用法。

個人感覺,cookie這東西,還真不如自己解析UA完成,用第三方的庫又累,又不可控。

⑻ python3爬取cookie時報405是怎麼回事

cookielib模塊的主要作用是提供可存儲cookie的對象,以便於與urllib2模塊配合使用來訪問Internet資源。 Cookielib模塊非常強大,我們可以利用本模塊的CookieJar類的對象來捕獲cookie並在後續連接請求時重新發送,比如可以實現模擬登錄 功能。
該模塊主要的對象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。

⑼ python2和python3的區別

簡單的說,2是舊3是新,3是2的升級版,3完全高於2,2是時代的眼淚3是現在和未來,2逐漸被淘汰3用的人越來越多。

之前兩個版本共存只是因為諸多package的更新換代並沒有跟上,但是到了現在只要還有活人維護的package基本都兼容3了,然而新建的package卻越來越多不兼容2。使用2的意義基本沒有了,日常用3大不了留一個2備用就行。

⑽ python中的cookielib有什麼作用

登錄只有做一次,登錄後瀏覽頁面之類的,如果沒有cookie,就會提示你沒有登錄

熱點內容
php把數據插入資料庫 發布:2025-02-13 00:09:48 瀏覽:369
eclipse查看jar包源碼 發布:2025-02-12 23:59:35 瀏覽:972
電腦主機伺服器維修 發布:2025-02-12 23:59:26 瀏覽:302
sqlserver標識 發布:2025-02-12 23:51:33 瀏覽:463
安卓怎麼玩地牢獵人 發布:2025-02-12 23:50:25 瀏覽:943
思鄉腳本 發布:2025-02-12 23:43:32 瀏覽:440
java的job 發布:2025-02-12 23:38:43 瀏覽:893
我的世界伺服器授權指令 發布:2025-02-12 23:30:13 瀏覽:597
電腦伺服器號在哪裡找 發布:2025-02-12 23:22:29 瀏覽:13
linux查看系統是32位 發布:2025-02-12 23:17:29 瀏覽:989