更新:加入有结果发邮件函数,具体见:python发送邮件.
在等签证结果,很着急.我每天都要刷个无数遍,那个网页想自动化实现,需要填4组数据.
用python做自动化正合适.一般网页用httpFox看到post数据,然后伪装浏览器,
做header和data这2个字典就行,注意data要用urllib.urlencode()编码.
但是这个网页要求SSL链接,如何做安全SSL我还不会.只好搜索,找到了Selenium,
这个东西真的很强大,有点儿类似按键精灵之类,可以录制所有浏览器操作
包括填表数据,然后自动化生成java,c#,python,php...很多语言的原生代码
也有很多人推荐cPAMIE来模拟ie访问数据.
最后找到的解决办法是用win32com来模拟ie,可以分析documents的元素来模拟ie,
这个办法的好处是比较直观,容易理解,mark一下.
import win32com import time refnum = "签证reference号码" strdate = "日期" strmon = "月份" stryear = "年份" url = "https://www.vfs.org.in/UKG-PassportTracking-PPT/ApplicantTrackStatus.aspx?Data=eQhlWV1635htWhLZVVgaKw==〈=XlDVhFJC4oE=" ie = win32com.client.Dispatch("InternetExplorer.Application") ie.Visible = 0 ie.Navigate(url) state = ie.ReadyState print "正在查询..." while 1: state = ie.ReadyState if state==4: break time.sleep(1) print "查询成功!" state = None ie.Document.getElementByID("txtRefNO").value = refnum ie.Document.getElementByID("txtDat").value = strdate ie.Document.getElementByID("txtMont").value = strmon ie.Document.getElementByID("txtYea").value = stryear ie.Document.getElementByID("cmdSubmit").click() while 1: state = ie.ReadyState ## print state, if state==4 and str(ie.LocationURL)=="https://www.vfs.org.in/UKG-PassportTracking-PPT/ApplicantTrackStatus.aspx?Data=eQhlWV1635htWhLZVVgaKw%3d%3d〈=XlDVhFJC4oE%3d": ## 注释掉的这句可以显示整个网页的代码 ## print ie.Document.body.innerHTML print ie.Document.getElementByID("lblScanStatus").innerHTML break time.sleep(1)另,如果你用pythonwin运行,可能会出现乱码,这时pythonwin的环境造成
需要的地方这样即可
u = u"你好" print u.encode("utf8")