python正则匹配查询港澳通行证办理进度示例分享


Posted in Python onDecember 27, 2013
import socket
import re
'''
广东省公安厅出入境政务服务网护照,通行证办理进度查询。
分析网址格式为 http://www.gdcrj.com/wsyw/tcustomer/tcustomer.do?&method=find&applyid=身份证号码
构造socket请求网页html,利用正则匹配出查询结果
'''
def gethtmlbyidentityid(identityid):
 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 host = 'www.gdcrj.com';
 suburl = '/wsyw/tcustomer/tcustomer.do?&method=find&applyid={0}'
 port = 80;
 remote_ip = socket.gethostbyname(host)
 s.connect((remote_ip , port))
 print('【INFO】:socket连接成功')
 message = 'GET '+ suburl.format(identityid) +' HTTP/1.1\r\nHost: '+ host +'\r\n\r\n'
 # str 2 bytes
 m_bytes = message.encode('utf-8')
 # send bytes
 s.sendall(m_bytes)
 print('【INFO】:远程下载中...')
 recevstr = ''
 while True:
  # return bytes
  recev = s.recv(4096)
  # bytes 2 str
  recevstr += recev.decode(encoding = 'utf-8', errors = 'ignore')
  if not recev:
   s.close()
   print('【INFO】:远程下载网页完成')
   break
 return recevstr
'''
利用正则表达式从上步获取的网页html内容里找出查询结果
'''
def getresultfromhtml(htmlstr):
 linebreaks = re.compile(r'\n\s*')
 space = re.compile('( )+')
 resultReg = re.compile(r'\<td class="news_font"\>([^<td]+)\</td\>', re.MULTILINE)
 #去除换行符和空格
 htmlstr = linebreaks.sub('', htmlstr)
 htmlstr = space.sub(' ', htmlstr)
 #匹配出查询结果
 result = resultReg.findall(htmlstr)
 for res in result:
  print(res.strip())
if __name__ == '__main__':
 identityid = input('输入您的身份证号码(仅限广东省居民查询):')
 try:
  identityid = int(identityid)
  print('【INFO】:开始查询')
  html = gethtmlbyidentityid(identityid)
  getresultfromhtml(html)
  print('【INFO】:查询成功')
 except:
  print('【WARN】:输入非法')
 input('【INFO】:按任意键退出')
Python 相关文章推荐
python二分法实现实例
Nov 21 Python
Python列表append和+的区别浅析
Feb 02 Python
python读取json文件并将数据插入到mongodb的方法
Mar 23 Python
用Python设计一个经典小游戏
May 15 Python
通过python顺序修改文件名字的方法
Jul 11 Python
pandas的唯一值、值计数以及成员资格的示例
Jul 25 Python
在Python中使用filter去除列表中值为假及空字符串的例子
Nov 18 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
May 25 Python
python else语句在循环中的运用详解
Jul 06 Python
Python JSON常用编解码方法代码实例
Sep 05 Python
一篇文章教你用python画动态爱心表白
Nov 22 Python
Python+Appium实现自动抢微信红包
May 21 Python
python模拟登录百度代码分享(获取百度贴吧等级)
Dec 27 #Python
python读文件逐行处理的示例代码分享
Dec 27 #Python
python调用cmd复制文件代码分享
Dec 27 #Python
win7安装python生成随机数代码分享
Dec 27 #Python
python正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 #Python
python正则表达式去掉数字中的逗号(python正则匹配逗号)
Dec 25 #Python
python正则表达式判断字符串是否是全部小写示例
Dec 25 #Python
You might like
自己做矿石收音机
2021/03/02 无线电
PHP中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
js类 from qq
2006/11/13 Javascript
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
window.open()实现post传递参数
2015/03/12 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
如何使用bootstrap框架 bootstrap入门必看!
2017/04/13 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
node.js通过url读取文件
2020/10/16 Javascript
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
Python调用C语言开发的共享库方法实例
2015/03/18 Python
python如何实现excel数据添加到mongodb
2015/07/30 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
python的flask框架难学吗
2020/07/31 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
戴森英国官网:Dyson英国
2019/05/07 全球购物
医大实习自我鉴定
2013/12/07 职场文书
青春飞扬演讲稿
2014/09/11 职场文书
实习介绍信模板
2015/01/30 职场文书
介绍信的写法
2015/01/31 职场文书
党小组考察意见
2015/06/02 职场文书
对学校的意见和建议
2015/06/04 职场文书
学生会主席任命书
2015/09/21 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
MYSQL常用函数介绍
2022/05/05 MySQL