先上我的代碼。參考了上面連結的文章
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<code># -*- coding: utf-8 -*-</code>
<code># !/usr/bin/python</code>
<code>import</code> <code>os</code>
<code>import</code> <code>urllib2</code>
<code>import</code> <code>urllib</code>
<code>import</code> <code>cookielib</code>
<code>import</code> <code>re </code>
<code>import</code> <code>sys</code>
<code>from</code> <code>bs4 </code><code>import</code> <code>BeautifulSoup</code>
<code>'''</code>
<code>編碼方式的設定,在中文使用時用到中文時的處理方式</code>
<code>default_encoding </code><code>=</code> <code>"utf-8"</code>
<code>if</code> <code>sys.getdefaultencoding() !</code><code>=</code> <code>default_encoding:</code>
<code> </code><code>reload</code><code>(sys)</code>
<code> </code><code>sys.setdefaultencoding(</code><code>"utf-8"</code><code>)</code>
<code>def</code> <code>getHtml(url,data</code><code>=</code><code>{}):</code>
<code> </code><code>if</code><code>(data</code><code>=</code><code>=</code><code>{}):</code>
<code> </code><code>req</code><code>=</code><code>urllib2.Request(url)</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>req</code><code>=</code><code>urllib2.Request(url,urllib.urlencode(data))</code>
<code> </code><code>html</code><code>=</code><code>urllib2.urlopen(req).read()</code>
<code> </code><code>return</code> <code>html</code>
<code>try</code><code>:</code>
<code> </code><code>cookie </code><code>=</code> <code>cookielib.CookieJar()</code>
<code> </code><code>cookieProc </code><code>=</code> <code>urllib2.HTTPCookieProcessor(cookie)</code>
<code>except</code><code>:</code>
<code> </code><code>raise</code>
<code>else</code><code>:</code>
<code> </code><code>opener </code><code>=</code> <code>urllib2.build_opener(cookieProc)</code>
<code> </code><code>opener.addheaders </code><code>=</code> <code>[(</code><code>'User-Agent'</code><code>,</code><code>'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11'</code><code>)]</code>
<code> </code><code>urllib2.install_opener(opener)</code>
<code>auth_url</code><code>=</code><code>'https://passport.jd.com/uc/loginService'</code>
<code>#auth_url = 'http://www.nowamagic.net/'</code>
<code>home_url</code><code>=</code><code>'http://usergrade.jd.com/user/consume'</code>
<code>#home_url = 'http://www.nowamagic.net/librarys/nmra/';</code>
<code>url </code><code>=</code> <code>"https://passport.jd.com/uc/login"</code>
<code>login</code><code>=</code><code>getHtml(url)</code>
<code>#print login </code>
<code>loginSoup </code><code>=</code> <code>BeautifulSoup(login,</code><code>'html.parser'</code><code>)</code>
<code>#查找登陸參數中的uuid</code>
<code>uuid </code><code>=</code> <code>loginSoup.find_all(</code><code>"form"</code><code>)[</code><code>0</code><code>].find_all(</code><code>"input"</code><code>)[</code><code>0</code><code>][</code><code>'value'</code><code>]</code>
<code>print</code> <code>uuid</code>
<code>clrName</code><code>=</code><code>loginSoup.find_all(</code><code>"form"</code><code>)[</code><code>0</code><code>].find_all(</code><code>"input"</code><code>)[</code><code>6</code><code>][</code><code>'name'</code><code>]</code>
<code>clrValue</code><code>=</code><code>loginSoup.find_all(</code><code>"form"</code><code>)[</code><code>0</code><code>].find_all(</code><code>"input"</code><code>)[</code><code>6</code><code>][</code><code>'value'</code><code>]</code>
<code>'''這倆參數不是必須。。。。</code>
<code>eid=loginSoup.find_all("form")[0].find_all("input")[4]['value']</code>
<code>fp=loginSoup.find_all("form")[0].find_all("input")[5]['value']</code>
<code>#下載下傳驗證碼圖檔:</code>
<code>checkPicUrl </code><code>=</code> <code>loginSoup.find_all(</code><code>"div"</code><code>,</code><code>id</code><code>=</code><code>"o-authcode"</code><code>)[</code><code>0</code><code>].find_all(</code><code>"img"</code><code>)[</code><code>0</code><code>][</code><code>'src2'</code><code>]</code>
<code>req </code><code>=</code> <code>getHtml(checkPicUrl)</code>
<code>checkPic </code><code>=</code> <code>open</code><code>(</code><code>"checkPic.jpg"</code><code>,</code><code>"w"</code><code>)</code>
<code>checkPic.write(req)</code>
<code>checkPic.close()</code>
<code>#調用mac系統的預覽(圖像檢視器)來打開圖檔檔案</code>
<code>os.system(</code><code>'open /Applications/Preview.app/ checkPic.jpg'</code><code>)</code>
<code>checkCode </code><code>=</code> <code>raw_input</code><code>(</code><code>"請輸入彈出圖檔中的驗證碼:"</code><code>) </code>
<code>#登入URL</code>
<code>url </code><code>=</code> <code>"http://passport.jd.com/uc/loginService"</code>
<code># 登陸使用者名和密碼</code>
<code>postData </code><code>=</code> <code>{</code>
<code> </code><code>'loginname'</code><code>:</code><code>'你自己的賬号'</code><code>,</code>
<code> </code><code>'nloginpwd'</code><code>:</code><code>'你自己的密碼'</code><code>,</code>
<code> </code><code>'loginpwd'</code><code>:</code><code>'你自己的密碼'</code><code>,</code>
<code> </code><code># 'machineNet':'',</code>
<code> </code><code># 'machineCpu':'',</code>
<code> </code><code># 'machineDisk':'', </code>
<code> </code><code>str</code><code>(clrName):</code><code>str</code><code>(clrValue),</code>
<code> </code><code>'uuid'</code><code>:uuid,</code>
<code> </code><code>'authcode'</code><code>: checkCode</code>
<code>}</code>
<code>passport</code><code>=</code><code>getHtml(url,postData)</code>
<code>print</code> <code>passport</code>
<code># 初始化一個CookieJar來處理Cookie</code>
<code>cookieJar=cookielib.CookieJar()</code>
<code># 執行個體化一個全局opener</code>
<code>opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))</code>
<code># 擷取cookie</code>
<code>req=urllib2.Request(auth_url,post_data,headers)</code>
<code>result = opener.open(req)</code>
<code># 通路首頁 自動帶着cookie資訊</code>
<code>result </code><code>=</code> <code>opener.</code><code>open</code><code>(</code><code>'http://i.jd.com/user/info'</code><code>)</code>
<code># 顯示結果</code>
<code>#print result.read()</code>
<code>soup</code><code>=</code><code>BeautifulSoup(result,</code><code>'html.parser'</code><code>)</code>
<code>#昵稱</code>
<code>nickName </code><code>=</code> <code>soup.find_all(</code><code>"input"</code><code>, </code><code>id</code><code>=</code><code>"nickName"</code><code>)[</code><code>0</code><code>][</code><code>"value"</code><code>]</code>
<code>print</code> <code>"nickName:"</code><code>,</code>
<code>print</code> <code>nickName</code>
但是當我回到寝室再次測試的時候卻給我傳回了“請重新整理頁面後重新送出”,暫時還沒有解決。
本文轉自 努力的C 51CTO部落格,原文連結:http://blog.51cto.com/fulin0532/1748590