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获取网页上图片下载地址的方法
Mar 11 Python
简单介绍Python中的floor()方法
May 15 Python
python中的代码编码格式转换问题
Jun 10 Python
Python中条件判断语句的简单使用方法
Aug 21 Python
Python Requests 基础入门
Apr 07 Python
python实现拓扑排序的基本教程
Mar 11 Python
Python绘图Matplotlib之坐标轴及刻度总结
Jun 28 Python
详解PyTorch中Tensor的高阶操作
Aug 18 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
Aug 20 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
Feb 14 Python
Java byte数组操纵方式代码实例解析
Jul 22 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
Jan 29 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用GD库生成高质量的缩略图片
2011/03/09 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
picChange 图片切换特效的函数代码
2010/05/06 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
js判断IE浏览器版本过低示例代码
2013/11/22 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
JavaScript头像上传插件源码分享
2016/03/29 Javascript
javascript self对象使用详解
2016/10/18 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
JavaScript的setter与getter方法
2017/11/29 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
python 七种邮件内容发送方法实例
2014/04/22 Python
Python正则表达式匹配ip地址实例
2014/10/09 Python
python学生信息管理系统(完整版)
2020/04/05 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
python实现按行分割文件
2019/07/22 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
Otel.com:折扣酒店预订
2017/08/24 全球购物
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
一些PHP的面试题
2015/05/06 面试题
介绍一下gcc特性
2015/10/31 面试题
勤俭节约倡议书
2014/04/14 职场文书
幼儿园师德演讲稿
2014/05/06 职场文书
家长建议怎么写
2014/05/15 职场文书
五好关工委申报材料
2014/05/31 职场文书
企业宣传标语
2014/06/09 职场文书
群众路线表态发言材料
2014/10/17 职场文书
婚庆主持词大全
2015/06/30 职场文书
导游词之杭州岳王庙
2019/11/13 职场文书
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS