国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python正則表達式抓取成語網站

2019-11-25 18:37:46
字體:
來源:轉載
供稿:網友

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]看到非空白字符。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 靖州| 宜良县| 牡丹江市| 乌鲁木齐县| 手机| 炎陵县| 沧源| 唐山市| 调兵山市| 闸北区| 米泉市| 兰西县| 镇安县| 鄂伦春自治旗| 许昌市| 拉萨市| 嘉善县| 绵阳市| 肥东县| 益阳市| 玉环县| 吉木乃县| 元朗区| 德庆县| 肥乡县| 共和县| 常山县| 沙雅县| 香港 | 五常市| 赣榆县| 宜阳县| 二连浩特市| 黑山县| 乌拉特前旗| 荥阳市| 广宗县| 汕尾市| 彭州市| 满洲里市| 南漳县|