最近想在一些网站获取汉字的一些,简单的使用python做了一个小解析工具。

工具使用 SGMLParser解析htm网页,获取里面指定的一些内容。

代码中获取的是http://www.chazidian.com/r_zi_zd4e50/里面的内容。

现有另一个问题,www.chazidian.com下面可能有上万个类似的网页,我怎么能获取这上万个网页的地址呢?希望高手解答解答···

#-*- coding:utf-8 -*-

import urllib2

import codecs

class WordInfo:

def __init__(self):

self.id=''#字unicode

self.word=''#字

self.hzjg=''#汉字结构

self.zzf=''#造字法

self.wb86=''#五笔86

self.wb98=''#五笔98

self.wx=''#五行

self.unicode=''#unicode

self.sjhm=''#四角号码

self.cj=''#仓颉

self.gbk=''#GBK编码

self.gfhzbh=''#规范汉字编号

def print_info(self):

print u'字unicode:', self.id

print u'字:', self.word

print u'汉字结构:', self.hzjg

print u'造字法:', self.zzf

print u'五笔86:', self.wb86

print u'五笔98:', self.wb98

print u'五行:', self.wx

print u'unicode:', self.unicode

print u'四角号码:', self.sjhm

print u'仓颉:', self.cj

print u'GBK编码:', self.gbk

print u'规范汉字编号:', self.gfhzbh

def write_file(self, fpWord):

info = "%(word)s\t%(jt)s\t%(ft)s\t%(pinyin)s\t%(py)s\t%(zy)s\t%(yy)s\t%(bs)s\t%(bh)s\t%(bwbh)s\t%(stroke)s\t%(coding)s\t%(uni)s\t%(wb)s\t%(cj)s\t%(zm)s\t%(fc)s\r\n" \

% {

'word':self.word,

'jt':self.jt,

'ft':self.ft,

'pinyin':','.join(self.pinyin),

'py': ','.join(self.py),

'zy': ','.join(self.zy),

'yy': ','.join(self.yy),

'bs': self.bs,

'bh': str(self.bh),

'bwbh': str(self.bwbh),

'stroke': self.stroke,

'coding': self.coding,

'uni': self.uni,

'wb': self.wb,

'cj': self.cj,

'zm': self.zm,

'fc': self.fc

}

fpWord.write(info)

from sgmllib import SGMLParser

class ZdicParser(SGMLParser):

def __init__(self):

SGMLParser.__init__(self)

self.word_info = WordInfo()

#标记

self.word = 0#字

self.li_info = 0

self.binfo = 0

def start_div(self, attrs):

if len(attrs) == 0:

return

if attrs[0] == ('class', 'zititle'):

self.word = 1

elif attrs[0] == ('class', 'li_info'):

self.li_info = 1

def end_div(self):

self.word = 0

self.li_info = 0

def start_ul(self, attrs):

if len(attrs) == 0:

return

if attrs[0] == ('class', 'binfo'):

self.binfo = 1

def end_ul(self):

self.binfo = 0

def handle_data(self, data):

try:

data = data.decode('utf8')

except:

data = data.decode('gbk')

if data.find(u'对不起,资源或文件无法找到') >= 0:

return

data.strip()

if self.word:

self.word_info.word = data

self.word_info.id = ord(data)

elif self.li_info:

index = data.find(u'汉字结构:')

if index >= 0:

self.word_info.hzjg = data[index+len(u'汉字结构:'):]

index = data.find(u'造字法:')

if index >= 0:

self.word_info.zzf = data[index+len(u'造字法:'):]

elif self.binfo:

print data

index = data.find(u'五笔86:')

if index >= 0:

self.word_info.wb86 = data[index+len(u'五笔86:'):]

index = data.find(u'五笔98:')

if index >= 0:

self.word_info.wb98 = data[index+len(u'五笔98:'):]

index = data.find(u'五行:')

if index >= 0:

self.word_info.wx = data[index+len(u'五行:'):]

index = data.find(u'UniCode:')

if index >= 0:

self.word_info.unicode = data[index+len(u'UniCode:'):]

index = data.find(u'四角号码:')

if index >= 0:

self.word_info.sjhm = data[index+len(u'四角号码:'):]

index = data.find(u'仓颉:')

if index >= 0:

self.word_info.cj = data[index+len(u'仓颉:'):]

index = data.find(u'GBK编码:')

if index >= 0:

self.word_info.gbk = data[index+len(u'GBK编码:'):]

index = data.find(u'规范汉字编号:')

if index >= 0:

self.word_info.gfhzbh = data[index+len(u'规范汉字编号:'):]

if __name__ == '__main__':

url_fp = urllib2.urlopen(r'http://www.chazidian.com/r_zi_zd4e50/',timeout=10)

chazidian = url_fp.read()

url_fp.close()

zdicParser = ZdicParser()

zdicParser.feed(chazidian)

zdicParser.word_info.print_info()

python解析网页所有可点击_Python 解析网页相关推荐

  1. python读取oracle数据转换成json文件_python 读取网页json数据库中

    数据挖掘敲门砖--Python爬虫入门 Python爬虫.jpg WHAT 数据挖掘是一门综合的技术,随着Ai的兴起,在国内的需求日渐增大. 数据挖掘的职业方向通常有三个,顺便概要地提一下所需的技能( ...

  2. python之33个关键字详解_Python解析、提取url关键字的实例详解

    解析url用的类库: python2版本: from urlparse import urlparse import urllib python3版本: from urllib.parse impor ...

  3. python解析xml数据_数据开发_Python解析XML文件

    解析XML文件 XML是可扩展标记语言,主要用于传输和存储数据 解析方式 使用lxml解析 主要注意: text tag attrib 使用方式 有 get() 以及迭代的情况 数据示例 a31 代码 ...

  4. python 实现对地图的点击_python使用folium库绘制地图点击框

    python使用folium 库生成地图网页的具体代码,供大家参考,具体内容如下 folium 官网 import folium import pandas as pd def mark_map(da ...

  5. python怎么模拟鼠标移动点击_Python模拟鼠标点击——如何正确的肝阴阳师

    本来嘛,说好了要写Selenium自动化搜电影的笔记的,然后正好今天上课无聊玩阴阳师开了个SSR,发现还有600体!准备怒刷之,但是又肝不动了.打算尝试用Python写个脚本来代替我自动点击(PC端, ...

  6. python控制鼠标移动并点击_python模拟鼠标点击和键盘输入的操作

    所有代码都是网上百度出来的,通过个人实践找到适合自己的. 采用的python 库是pymouse.pykeyboard 安装时直接pip安装的,pip install PyUserInput 安装不成 ...

  7. Python一亿以内的素数个数_Python+django网页设计入门(17):模板语法及应用

    前导课程: Python+django网页设计入门(16):优化设计复用分页代码 Python+django网页设计入门(15):公用模板设计与使用 Python+django网页设计入门(14):使 ...

  8. Python一亿以内的素数个数_Python+django网页设计入门(18):自定义模板过滤器

    前导课程: Python+django网页设计入门(17):模板语法及应用 Python+django网页设计入门(16):优化设计复用分页代码 Python+django网页设计入门(15):公用模 ...

  9. python 实现对地图的点击_python实现Pyecharts实现动态地图(Map、Geo)

    一些经常画图的开发人员大概都用过echart,不过小白用Python比较多,学习了python下的Pyecharts,发现这个包真的很强大.下面是小白对动态地图的实践案例: 假如有这样一组数据,全国每 ...

最新文章

  1. 走近TCP/IP协议
  2. 每日一学|数据中心spine leaf网络架构
  3. xgboost分类器直接调用验证集的评估结果
  4. js中推断浏览器类型
  5. 牛客假日团队赛5J 护城河 bzoj 1670: [Usaco2006 Oct]Building the Moat护城河的挖掘 (凸包的周长)...
  6. linux 进入一个中文乱码的目录的方法
  7. java连接rabbitmq_RabbitMQ教程(工作模式篇)
  8. java css文件预处理_浅谈 CSS 预处理器: 为什么要使用预处理器?
  9. Atitit. 项目文档目录大纲 总集合  v2
  10. Play framework request code 413
  11. 【C语言】18-变量类型
  12. Android WebView开发(三):WebView性能优化
  13. 设备划分冲突域和广播域
  14. Crypto-Enigma密码机原理
  15. sklearn:OneHotEncoder的简单用法
  16. python实现ORC/文字识别之pytesseract
  17. 如何快速识别图片中的文字?建议使用者两种方法
  18. hangfire 介绍(一)
  19. 一文带你了解 sensor
  20. 用二极管、三极管和MOS管搭建逻辑门电路,你确定这些电路图不收藏?

热门文章

  1. python面向对象的特征_03 Python 关键点讲解:面向对象的机制
  2. linux清空垃圾箱的命令,在Linux系统下安装Autotrash并使用Autotrash自动清空垃圾箱...
  3. mysql分裂函数函数_分裂函数等价于T-SQL?
  4. mysql star item 失败_解决CentOS7下MySQL服务启动失败的问题.md
  5. 查看oracle资源使用情况,Oracle查询表空间使用情况
  6. 文档 hbase_0783-6.2.0-如何在Hue中集成HBase
  7. flutter 禁止冒泡_【Flutter】Switch开关组件
  8. 手机通讯录备份代码实现一
  9. 高等数学一使用python实现极限后有代码
  10. (转)认识原型对象和原型链