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数字图像处理之高级形态学处理
Apr 27 Python
Python下使用Scrapy爬取网页内容的实例
May 21 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
python处理大日志文件
Jul 23 Python
python opencv图片编码为h264文件的实例
Dec 12 Python
Tensorflow读取并输出已保存模型的权重数值方式
Jan 04 Python
如何在 Django 模板中输出 &quot;{{&quot;
Jan 24 Python
logging level级别介绍
Feb 21 Python
Python装饰器用法与知识点小结
Mar 09 Python
浅谈Django中的QueryDict元素为数组的坑
Mar 31 Python
OpenCV实现常见的四种图像几何变换
Apr 01 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在线生成ico文件的代码
2007/10/09 PHP
PHP 开发环境配置(Zend Studio)
2010/04/28 PHP
Javascript 更新 JavaScript 数组的 uniq 方法
2008/01/23 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
jquery实现手风琴效果实例代码
2013/11/15 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
JS module的导出和导入的实现代码
2019/02/25 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
2019/07/24 Javascript
在vue中根据光标的显示与消失实现下拉列表
2019/09/29 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
原生JS实现音乐播放器的示例代码
2021/02/25 Javascript
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
对pandas处理json数据的方法详解
2019/02/08 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
2019/09/11 Python
python如何删除列为空的行
2020/07/17 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
成功的酒店创业计划书
2013/12/27 职场文书
关于读书的演讲稿
2014/05/07 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
2014年班主任德育工作总结
2014/12/05 职场文书
语文教师个人工作总结
2015/02/06 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书
刑事起诉书范文
2015/05/19 职场文书
闪闪的红星观后感
2015/06/08 职场文书
创业计划书之便利店
2019/09/05 职场文书
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技