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基本数据类型详细介绍
Mar 11 Python
Python中下划线的使用方法
Mar 27 Python
python实现批量改文件名称的方法
May 25 Python
python基于隐马尔可夫模型实现中文拼音输入
Apr 01 Python
简单讲解Python编程中namedtuple类的用法
Jun 21 Python
MAC中PyCharm设置python3解释器
Dec 15 Python
Python爬虫获取图片并下载保存至本地的实例
Jun 01 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
python实现七段数码管和倒计时效果
Nov 23 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
Nov 01 Python
python判断all函数输出结果是否为true的方法
Dec 03 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
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
php多文件上传实现代码
2014/02/20 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
动态加载js的几种方法
2006/10/23 Javascript
解决JS中乘法的浮点错误的方法
2014/01/03 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
angularjs实现分页和搜索功能
2018/01/03 Javascript
vue 组件使用中的一些细节点
2018/04/25 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
vant 中van-list的用法说明
2020/11/11 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
celery4+django2定时任务的实现代码
2018/12/23 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
Django中FilePathField字段的用法
2020/05/21 Python
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
实习生自我鉴定
2013/12/12 职场文书
单位创先争优活动方案
2014/01/26 职场文书
珍珠鸟教学反思
2014/02/01 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
市场推广策划方案
2014/06/02 职场文书
公司任命书范本
2014/06/04 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
理想国读书笔记
2015/06/25 职场文书
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python