python


12、showdoc带验证码、cookie

<pre><code>python2.7</code></pre> <pre><code class="language-python">#!/usr/bin/env python # -*- coding: utf-8 -*- import urllib2 import cookielib import urllib import re import sys '''''模拟登录''' reload(sys) sys.setdefaultencoding("utf-8") # 防止中文报错 CaptchaUrl = "https://www.showdoc.cc/server/index.php?s=/api/common/verify" PostUrl = "https://www.showdoc.cc/server/index.php?s=/api/user/login" # 验证码地址和post地址 cookie = cookielib.CookieJar() print cookie handler = urllib2.HTTPCookieProcessor(cookie) opener = urllib2.build_opener(handler) # 将cookies绑定到一个opener cookie由cookielib自动管理 username = 'ld***' password = '123*****' # 用户名和密码 picture = opener.open(CaptchaUrl).read() # 用openr访问验证码地址,获取cookie local = open('e:/image.jpg', 'wb') local.write(picture) local.close() # 保存验证码到本地 v_code = raw_input('输入验证码: ') # 打开保存的验证码图片 输入 postData = { 'username': username, 'password': password, 'v_code': v_code } # 根据抓包信息 构造表单 headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.8', 'Connection': 'keep-alive', 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36', } # 根据抓包信息 构造headers data = urllib.urlencode(postData) # 生成post数据 ?key1=value1&amp;key2=value2的形式 request = urllib2.Request(PostUrl, data, headers) # 构造request请求 try: response = opener.open(request) result = response.read().decode('utf-8') # 由于该网页是gb2312的编码,所以需要解码 print result # 打印登录后的页面 except urllib2.HTTPError, e: print e.code # 利用之前存有cookie的opener登录页面 # 生成post数据 ?key1=value1&amp;key2=value2的形式 request2 = urllib2.Request('https://www.showdoc.cc/server/index.php?s=/api/item/myList', headers = headers) # 构造request请求 try: response = opener.open(request2) result = response.read().decode('utf-8') # 由于该网页是gb2312的编码,所以需要解码 print result # 打印登录后的页面 except urllib2.HTTPError, e: print e.code </code></pre>

页面列表

ITEM_HTML