手机
当前位置:查字典教程网 >脚本专栏 >python >python正则表达式抓取成语网站
python正则表达式抓取成语网站
摘要:1、首先找到一个在线成语网站2、查看网页结构,定义正则式看一下要抓的成语的标签有什么特点,查看源码,可以发现要抓的成语都在标签中,如:安如磐...

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]+"@@CYn")#标记为成语,分词时使用

print key+'字母成语抓取完毕'

dicFile.close()

print '全部成语抓取完毕'

把成语保存在了txt文本中,还添加了一个后缀标签。

最后注意,设计正则表达式时可能会出现明明认为是正确的,就是匹配不了,对空白字符要留意,比如说要解析:

复制代码 代码如下:

<div>

<a href="/u/kkun/" title="kkun">kkun</a>

</div>

你看不出第一行与第二行的空白字符是什么,可以index = html.find('avatar_name'),html[4677:4677+100]看到非空白字符。

【python正则表达式抓取成语网站】相关文章:

python 提取文件的小程序

Python 正则表达式操作指南

python 正则表达式 概述及常用字符

python分割和拼接字符串

python 控制语句

python多线程扫描端口示例

python使用xauth方式登录饭否网然后发消息

Python 除法小技巧

python中将阿拉伯数字转换成中文的实现代码

Python的词法分析与语法分析

精品推荐
分类导航