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的id()函数解密过程
Dec 25 Python
python实现给字典添加条目的方法
Sep 25 Python
深入理解Python单元测试unittest的使用示例
Nov 18 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
May 15 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
python实现简单加密解密机制
Mar 19 Python
python操作gitlab API过程解析
Dec 27 Python
Python tkinter三种布局实例详解
Jan 06 Python
pytorch 实现删除tensor中的指定行列
Jan 13 Python
python合并多个excel文件的示例
Sep 23 Python
django中ImageField的使用详解
Dec 21 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中读取和写入WORD文档的代码
2008/04/09 PHP
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
让IE8浏览器支持function.bind()方法
2014/10/16 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
jQuery插件form-validation-engine正则表达式操作示例
2017/02/09 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
Vue多系统切换实现方案
2018/06/05 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
vue中使用WX-JSSDK的两种方法(推荐)
2020/01/18 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
Python多线程下载文件的方法
2015/07/10 Python
python中map()与zip()操作方法
2016/02/27 Python
python读取和保存视频文件
2018/04/16 Python
python 字典操作提取key,value的方法
2019/06/26 Python
Python交互式图形编程的实现
2019/07/25 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
哪些是python中web开发框架
2020/06/17 Python
Django rest framework分页接口实现原理解析
2020/08/21 Python
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
资源环境与城市管理专业推荐信
2013/11/30 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
SQL Server中搜索特定的对象
2022/05/25 SQL Server