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 16 Python
在Python中处理字符串之isdecimal()方法的使用
May 20 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
May 26 Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 Python
python进阶_浅谈面向对象进阶
Aug 17 Python
详解如何用OpenCV + Python 实现人脸识别
Oct 20 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
Apr 19 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
python的set处理二维数组转一维数组的方法示例
May 31 Python
pandas DataFrame运算的实现
Jun 14 Python
通过代码实例了解Python sys模块
Sep 14 Python
详解Golang如何实现支持随机删除元素的堆
Sep 23 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
咖啡的传说和历史
2021/03/03 新手入门
PHP防范SQL注入的具体方法详解(测试通过)
2014/05/09 PHP
PHP实现的进度条效果详解
2016/05/03 PHP
简单概括PHP的字符串中单引号与双引号的区别
2016/05/07 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
Jquery解析json字符串及json数组的方法
2015/05/29 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python运行时间的几种方法
2016/06/17 Python
Python3非对称加密算法RSA实例详解
2018/12/06 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
2020/02/25 Python
python实现udp传输图片功能
2020/03/20 Python
css3 盒模型以及box-sizing属性全面了解
2016/09/20 HTML / CSS
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
JDO的含义
2012/11/17 面试题
毕业生求职简历的自我评价
2013/10/07 职场文书
经典的班主任推荐信
2013/10/28 职场文书
电子专业推荐信范文
2013/11/18 职场文书
团队精神的演讲稿
2014/05/14 职场文书
小学运动会演讲稿
2014/08/25 职场文书
党员倡议书
2015/01/19 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书
红色影片观后感
2015/06/18 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python