Posted in Python onMarch 16, 2015
万恶的苹果,我的5s最近坏了,官方的零售店是根本就预约不到啊预约不到啊,所以只好去找授权维修点了,昨天送去之后人家说可能要返厂,周期大概20天左右,我直接就醉了,20天啊,快一个月啊,等手机到手都快清明了,fuck.今天下午无聊在网上搜了下看能不能查到维修进度,发现在苹果官网就可以查看,不过我的机子目测还没有送修,现在还查不到维修进度,趁着无聊没事干,写了个程序来即使的查看维修进度.
python的urllib2已经添加了对于cookie的支持,这对于抓取一些要登录的站点或者要设置cookie的站点很方便.
而且urllib2模块支持调试模式,可以看到你的程序向服务器发送的请求已经服务器返回的信息,这样就可以很方便的看清楚自己程序是否有问题.
好了,不说废话了,下面贴出代码
from bs4 import BeautifulSoup import urllib2 import urllib import cookielib urllib2.urlopen('http://www.baidu.com').read() baseurl='https://selfsolve.apple.com/repairstatus/GetRepairDetails.do' headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Host':'selfsolve.apple.com', 'Origin':'https://selfsolve.apple.com', 'Referer':'https://selfsolve.apple.com/repairstatus/main.do', 'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4', 'Cache-Control':'max-age=0', 'Connection':'keep-alive', 'Content-Length':45, 'Content-Type':'application/x-www-form-urlencoded', 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36', } postData={ 'repair_id':'aaaaaa',#维修序号 'serial_number':'bbbbb'#手机序列号 } if __name__=='__main__': cj = cookielib.LWPCookieJar() cookie_support = urllib2.HTTPCookieProcessor(cj) opener = urllib2.build_opener( cookie_support, urllib2.HTTPHandler(debuglevel=1), urllib2.HTTPSHandler(debuglevel=1) ) urllib2.install_opener(opener) StrpostData=urllib.urlencode(postData) req=urllib2.Request(baseurl,StrpostData,headers) rsp=urllib2.urlopen(req) text=rsp.read() file=open('repair.html','w') file.write(text) file.close() print text raw_input()
好了,程序就是这样子,上面说的添加cookie支持和开启调试模式就是下面这段代码
cj = cookielib.LWPCookieJar() cookie_support = urllib2.HTTPCookieProcessor(cj) opener = urllib2.build_opener( cookie_support, urllib2.HTTPHandler(debuglevel=1), urllib2.HTTPSHandler(debuglevel=1) ) urllib2.install_opener(opener)
然后可以很方便的看到程序运行时候的输出,如下图
接下来就可以通过得到的html来抓取需要的信息了.
python实现查询苹果手机维修进度
- Author -
junjie声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@