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中__call__方法示例分析
Oct 11 Python
python复制与引用用法分析
Apr 08 Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 Python
Python语言的变量认识及操作方法
Feb 11 Python
Python中pow()和math.pow()函数用法示例
Feb 11 Python
python 获取一个值在某个区间的指定倍数的值方法
Nov 12 Python
Django中更改默认数据库为mysql的方法示例
Dec 05 Python
Python assert语句的简单使用示例
Jul 28 Python
Django bulk_create()、update()与数据库事务的效率对比分析
May 15 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
python 实现控制鼠标键盘
Nov 27 Python
Python 文字识别
May 11 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/01 无线电
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
PHP请求Socket接口测试实例
2016/08/12 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
js/jQuery简单实现选项卡功能
2014/01/02 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
JavaScript实现带标题的图片轮播特效
2015/05/20 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
JavaScript小技巧整理
2015/12/30 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
parabola.js抛物线与加入购物车效果的示例代码
2017/10/25 Javascript
js中DOM事件绑定分析
2018/03/18 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
Python读取properties配置文件操作示例
2018/03/29 Python
python实现简单的单变量线性回归方法
2018/11/08 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
python切割图片的示例
2020/11/12 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
逻辑链路控制协议
2016/10/01 面试题
护理专业毕业生自荐信
2014/06/15 职场文书
欢送会主持词
2015/07/01 职场文书
应收账款管理制度
2015/08/06 职场文书
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python