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中logging模块的用法实例
Sep 29 Python
django通过ajax发起请求返回JSON格式数据的方法
Jun 04 Python
基于hashlib模块--加密(详解)
Jun 21 Python
Python类的继承和多态代码详解
Dec 27 Python
python中从str中提取元素到list以及将list转换为str的方法
Jun 26 Python
Python读取mat文件,并转为csv文件的实例
Jul 04 Python
Win10下python3.5和python2.7环境变量配置教程
Sep 18 Python
pymongo中聚合查询的使用方法
Mar 22 Python
Python3 批量扫描端口的例子
Jul 25 Python
dpn网络的pytorch实现方式
Jan 14 Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 Python
python中的 zip函数详解及用法举例
Feb 16 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 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
Js获取事件对象代码
2010/08/05 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
详解AngularJS实现表单验证
2015/12/10 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
详解angularJS自定义指令间的相互交互
2017/07/05 Javascript
浅析为什么a=&quot;abc&quot; 不等于 a=new String(&quot;abc&quot;)
2017/10/25 Javascript
vue中本地静态图片路径写法
2018/03/06 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
java实现单链表增删改查的实例代码详解
2019/08/30 Javascript
layui table单元格事件修改值的方法
2019/09/24 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
Unicode和Python的中文处理
2017/03/19 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
python 读取数据库并绘图的实例
2019/12/03 Python
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
自我评价200字分享
2013/12/17 职场文书
警示教育活动总结
2014/05/05 职场文书
重大事项社会稳定风险评估方案
2014/06/15 职场文书
图书馆标语
2014/06/19 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
OpenCV-Python实现图像平滑处理操作
2021/06/08 Python
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle