python正则表达式抓取成语网站


Posted in Python onNovember 20, 2013

1、首先找到一个在线成语网站

2、查看网页结构,定义正则式

看一下要抓的成语的标签有什么特点,查看源码,可以发现要抓的成语都在<a>标签中,如:<a href="/cy0/93.html">安如磐石</a>,成语事实上就是一个瞄文本,不同成语指向的链接不同,其实也就"/cy0/93.html"中的数字不同,所以正则式里匹配两次数字就行了,定义正则式 reg =   "<a href=\"/cy(\d+)/(\d+).html\">(.*?)</a>"。
3、上代码吧

#anthor jiqunpeng
#time 20121124
import urllib
import re
def getHtml(url): #从URL中读取html内容
    page = urllib.urlopen(url) 
    html = page.read() 
    page.close() 
    return html
def getDictionary(html): #匹配成语
    reg = "<a href=\"/cy(\d+)/(\d+).html\">(.*?)</a>"   
    dicList = re.compile(reg).findall(html)
    return dicList
def getItemSite():#手工把每个字母开头的页面数统计下来
    itemSite = {}#申明为空字典
    itemSite["A"] = 3
    itemSite["B"] = 21
    itemSite["C"] = 19
    itemSite["D"] = 18
    itemSite["E"] = 2
    itemSite["F"] = 14
    itemSite["G"] = 13
    itemSite["H"] = 15
    itemSite["J"] = 23
    itemSite["K"] = 6
    itemSite["L"] = 15
    itemSite["M"] = 12
    itemSite["N"] = 5
    itemSite["O"] = 1
    itemSite["P"] = 6
    itemSite["Q"] = 16
    itemSite["R"] = 8
    itemSite["S"] = 26
    itemSite["T"] = 12
    itemSite["W"] = 13
    itemSite["X"] = 16
    itemSite["Y"] = 35
    itemSite["A"] = 21
    return itemSite
    
if __name__== "__main__":
    dicFile = open("dic.txt","w+")#保存成语的文件
    domainsite = "http://chengyu.itlearner.com/list/"
    itemSite = getItemSite()
    for key,values in itemSite.items():
        for index in range(1,values+1):
            site = key +"_"+str(index)+".html"              
            dictionary = getDictionary(getHtml(domainsite+site))
            for dic in dictionary:
                dicFile.write(dic[2]+"@@CY\n")#标记为成语,分词时使用
        print key+'字母成语抓取完毕'        
    dicFile.close()    
    print '全部成语抓取完毕'

把成语保存在了txt文本中,还添加了一个后缀标签。
最后注意,设计正则表达式时可能会出现明明认为是正确的,就是匹配不了,对空白字符要留意,比如说要解析:

<div class="avatar_name">
                <a href="/u/kkun/" title="kkun">kkun</a>
            </div>

你看不出第一行与第二行的空白字符是什么,可以index = html.find('avatar_name'),html[4677:4677+100]看到非空白字符。

Python 相关文章推荐
在python中的socket模块使用代理实例
May 29 Python
Python实现截屏的函数
Jul 26 Python
python实现二维码扫码自动登录淘宝
Dec 27 Python
Python实现备份MySQL数据库的方法示例
Jan 11 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
Python字典创建 遍历 添加等实用基础操作技巧
Sep 13 Python
解决PyCharm同目录下导入模块会报错的问题
Oct 13 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
Jan 24 Python
django rest framework 实现用户登录认证详解
Jul 29 Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
python爬取网站数据保存使用的方法
Nov 20 #Python
使用python搭建Django应用程序步骤及版本冲突问题解决
Nov 19 #Python
python解析json实例方法
Nov 19 #Python
python聊天程序实例代码分享
Nov 18 #Python
python实现系统状态监测和故障转移实例方法
Nov 18 #Python
python线程池的实现实例
Nov 18 #Python
python批量导出导入MySQL用户的方法
Nov 15 #Python
You might like
php实现多城市切换特效
2015/08/09 PHP
html 锁定页面(js遮罩层弹出div效果)
2009/10/27 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
JS 去前后空格大全(IE9亲测)
2013/07/15 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
Three.js实现绘制字体模型示例代码
2017/09/26 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
React Router v4 入坑指南(小结)
2018/04/08 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
Python中用Decorator来简化元编程的教程
2015/04/13 Python
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
详解python的数字类型变量与其方法
2016/11/20 Python
Python类装饰器实现方法详解
2018/12/21 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
python enumerate内置函数用法总结
2020/01/07 Python
TensorFLow 不同大小图片的TFrecords存取实例
2020/01/20 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
纯CSS3实现移动端展开和收起效果的示例代码
2020/04/26 HTML / CSS
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
植物选择:Botanic Choice
2017/02/15 全球购物
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
软件测试英文面试题
2012/10/14 面试题
药学专业个人的自我评价
2013/12/31 职场文书
环卫工人慰问信
2015/02/15 职场文书
经销商会议开幕词
2016/03/04 职场文书
导游词之四川熊猫基地
2020/01/13 职场文书
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL
TypeScript 内置高级类型编程示例
2022/09/23 Javascript