自然语言处理之中文语料收集

自然语言处理语料的来源

众所周知,中文的语料非常稀少,因为中文不像英语那样只有26个字母组成一切,中文的汉字数不清楚,所以对于预料的整理就非常的繁琐和复杂。抛开现有的一些质量不好的中文语料不谈,我们可以想到一些已经整理的差不多的语料,只需要我们稍加处理就可以得到一个完美的语料。这个时候我就想到了字幕文件这个尚未被发现的巨大语料库,因为字幕的容易获取,而且处理起来比较简单,所以我选择了爬取字幕网站这一方式。

首先,选择一个字幕网站https://www.zimuku.la/我选择的是这个网站,大家也可以选择其他字幕网站。首先我们要先查看这个网站的网页结构,观察他的代码结构,发现我们想要的东西。下面来看一下网站首页:
在这里插入图片描述

我们观察后发现网站首页就有字幕的链接存在,我们再观察网页底部:

在这里插入图片描述
我们看到网页底部有页码,总共1500条字幕信息,一共50页。经过测试后发现,每一页的链接就是数字的变换,如:
http://www.zimuku.la/newsubs?&p=1这是第一页,http://www.zimuku.la/newsubs?&p=2这是第二页。
所以这就确定了我们的爬取链接。

接下来我们就可以查看第一页的网页源代码了:
在这里插入图片描述
划红线部分的detail后面的部分就是我们要找的每一条字幕的链接,只要在它的前面加上http://www.zimuku.la/即可对其进行访问。

接下去,我们对其访问到的网页进行分析:
在这里插入图片描述
可以看到绿色的按钮下载字幕是我们要找的,我们要将他的链接找到,同样查看其网页源代码:
在这里插入图片描述
在源代码中我们找到了这个下载链接,所有的链接我们都已经找到,接下来我们要做的就是具体的代码实现了。我们要用到的东西会有正则表达式,selenium,request等python库。

对于正则表达式就是根据网页源代码进行编写,我们可以用https://alf.nu/RegexGolf#accesstoken=xDpssJbZsLtvWCZGOppl这个正则表达式网站进行检测它的正确与否,可以提高我们的效率,

selenium模块的运用,主要是用浏览器测试工具操纵鼠标点击下载按钮,对字幕进行下载。因为要提高我们的效率,所以我们在一定的时间关闭浏览器测试工具。如果该字幕还未下载完成只能对其进行手动删除处理,这一点和网速有关。我也在想办法优化。

request库的使用相信大家都已经了解,不了解的可以期待我明天给大家写的一篇博客,简单的爬虫实现。

下面是源代码展示:

import re
import time
from selenium import webdriver
import requests

for l in range(1, 50):
    try:
        url = "http://www.zimuku.la/newsubs?&p=" + str(l + 1)
        r = requests.get(url)
        data = r.text
        pat = 'href="(.*?)" target="_blank" title'
        rst = re.compile(pat).findall(data)
        for i in range(len(rst)):
            rst[i] = "http://www.zimuku.la/" + rst[i]
            # print(rst)
        dw_url = []
        for j in range(len(rst)):
            r2 = requests.get(rst[j])
            data2 = r2.text
            pat2 = 'down1" href="(.*?)" target="_blank" rel'
            rst2 = re.compile(pat2).findall(data2)
            dw_url.append(rst2[0])
            # print(rst2)
        # print(dw_url)
        for k in range(len(dw_url)):
            driver = webdriver.Chrome()
            driver.get(dw_url[k])
            driver.implicitly_wait(8)
            driver.find_element_by_xpath("/html/body/main/div/div/div/table/tbody/tr/td[1]/div/ul/li[1]/a").click()
            time.sleep(20)
            driver.close()
    except:
        print("爬取出错!")

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值