收集英语单词及释义的前期准备工作

13 篇文章 1 订阅
6 篇文章 0 订阅

       纯英语单词可以从下面几个网址下载(第3个和第4个为博主上传到CSDN的文件):

网址1

网址2

网址3

网址4

       我将下载好的英文单词列表存放到阿里云服务器,文件结构与爬虫所在目录结构如图1与图2所示。并使用如下所示的Python代码,对于每个单词分别爬取Bing在线词典所給出的释义。

import urllib.request

def grab(url, filename, num):
    resp = urllib.request.urlopen(url)
    data = resp.read()
    name = "/home/crawler/" + str(num) + ".txt"
    file_name = open(name, "wb")
    file_name.write(data)
    file_name.close()
    print("Job done.")

def getFileName(num):
    path = "/home/non_alphabetical/result" + str(num) + ".txt"
    with open(path) as f:
        lines = f.readlines()
    return lines

if __name__ == '__main__':
    for cnt in range(0, 21):
        lines = getFileName(cnt)
        for line in lines:
            EnglishWord = line.rstrip()
            print(EnglishWord)
            web_addr = "https://cn.bing.com/dict/search?q=" + str(EnglishWord) + "&qs=n&form=Z9LH5&sp=-1&pq=" + str(EnglishWord) + "&sc=8-8&sk=&cvid=AA1C8A024F484889A4B788484086A7DF" #input("请输入要抓取的网址:")
            try:
                grab(web_addr, EnglishWord, cnt)
            except:
                print("Wrong URL")

 

图1 单词文件列表结构

 

图2 爬虫程序与所爬取文件结构

 

       因为有些单词不在Bing在线词典的数据库里面,因此搜素不到其单词释义,对应爬取到的页面源代码的文件容量较小,经观察为:112 KB,使用如下Linux指令删除容量小于112 KB的文件即可(具体做法是新建delete_invalid_file.sh文件并将下列命令复制其中)。

while true ;do find /home/crawler -name "*" -type f -size -112k | xargs -n 1 rm -f; done;

 

       为了能够使爬虫和删除指令一直保持运行,需要借助screen,详情参考博文。结合本实验,最终运行的指令分别如下所示(需在两个不同的终端执行,且另一个终端不能使用exit或者CTRL-C终止,你可以直接用鼠标把终端叉掉,哈哈哈!):

screen -s crawler

python3 test1.py
screen -s delete_invalid_file

chmod 777 delete_invalid_file.sh

./delete_invalid_file.sh

 

       最终运行效果如图3所示。

图3 借助screen同时保持多个程序处于运行状态

 

       爬取到的忘记是网页文档的形式,包含了大量的HTML标签,后期需要进一步处理才能得到“干净”的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值