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中的装饰器使用
Jun 20 Python
用Python设计一个经典小游戏
May 15 Python
Python 多线程Threading初学教程
Aug 22 Python
python3.6 实现AES加密的示例(pyCryptodome)
Jan 10 Python
Python使用Django实现博客系统完整版
Sep 29 Python
python之DataFrame实现excel合并单元格
Feb 22 Python
idea创建springMVC框架和配置小文件的教程图解
Sep 18 Python
Python企业编码生成系统总体系统设计概述
Jul 26 Python
python库matplotlib绘制坐标图
Oct 18 Python
使用Tensorflow将自己的数据分割成batch训练实例
Jan 20 Python
在Django中预防CSRF攻击的操作
Mar 13 Python
梳理总结Python开发中需要摒弃的18个坏习惯
Jan 22 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源代码
2013/06/26 PHP
php中3种方法删除字符串中间的空格
2014/03/10 PHP
基于JQuery模仿苹果桌面的Dock效果(初级版)
2012/10/15 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
Vue组件选项props实例详解
2017/08/18 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
2017/12/25 jQuery
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
Python日期的加减等操作的示例
2017/08/15 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
使用python将图片按标签分入不同文件夹的方法
2018/12/08 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
pycharm部署、配置anaconda环境的教程
2020/03/24 Python
基于python实现操作git过程代码解析
2020/07/27 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
Python多分支if语句的使用
2020/09/03 Python
python使用numpy中的size()函数实例用法详解
2021/01/29 Python
销售经理岗位职责
2014/03/16 职场文书
孙振耀退休感言
2015/08/01 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
vue打包时去掉所有的console.log
2022/04/10 Vue.js
java开发双人五子棋游戏
2022/05/06 Java/Android
Java实现注册登录跳转
2022/06/16 Java/Android