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实现的简单抽奖系统实例
May 22 Python
python实现的文件同步服务器实例
Jun 02 Python
Python聚类算法之基本K均值实例详解
Nov 20 Python
Python的socket模块源码中的一些实现要点分析
Jun 06 Python
Python 查找字符在字符串中的位置实例
May 02 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
Jan 15 Python
python实现石头剪刀布小游戏
Jan 20 Python
Python中的self用法详解
Aug 06 Python
selenium 多窗口切换的实现(windows)
Jan 18 Python
filter使用python3代码进行迭代元素的实例详解
Dec 03 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
Mar 02 Python
python中对列表的删除和添加方法详解
Feb 24 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中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
PHP设计模式之适配器模式代码实例
2015/05/11 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
php如何执行非缓冲查询API
2016/07/22 PHP
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
javascript中in运算符用法分析
2015/04/28 Javascript
javascript表单事件处理方法详解
2016/05/15 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
js实现消息滚动效果
2017/01/18 Javascript
利用NPM淘宝的node.js镜像加速nvm
2017/03/27 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
详解新手使用vue-router传参时注意事项
2019/06/06 Javascript
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
Numpy之reshape()使用详解
2019/12/26 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
工作中的自我评价如何写好
2013/10/28 职场文书
学校招生宣传广告词
2014/03/19 职场文书
经典安踏广告词
2014/03/21 职场文书
三月学雷锋月活动总结
2014/04/28 职场文书
纪律教育月活动总结
2014/08/26 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
2015政治思想表现评语
2015/03/25 职场文书
订货会主持词
2015/07/01 职场文书
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis