Cào “Danh mục các ngôn ngữ” của Ethnologue

Trang Ethnologue Language Code Index liệt kê 7299 ngôn ngữ trên thế giới. Ngoài ra, cơ sở dữ liệu của Ethnologue còn có thông tin chi tiết về tất cả các họ, nhóm ngôn ngữ trên thế giới. Tuy nhiên, trước mắt chỉ cào 7299 ngôn ngữ kia thôi.

#!/bin/sh
# Cào "Danh mục các ngôn ngữ" của Ethnologue

base="http://www.ethnologue.com"

# Bước 1: Tải danh sách các ngôn ngữ
wget $base/codes/LanguageCodes.tab

# Bước 2: Chuyển mã
# (Chả hiểu họ dùng bảng mã gì mà `sed` bị lỗi)
iconv -c LanguageCodes.tab > LangList.txt

# Bước 3: Lấy mã ngôn ngữ (dạng 3 kí tự)
sed -r -e '/^[A-Z]/d' -e 's/^([a-z]{3}).*/\1/ig' -i LangList.txt

# Bước 4: Tải về theo từng ngôn ngữ
for i in `less LangList.txt`;
do
	wget $base/show_language.asp?code=$i -O "$i.html";
	echo $i > DL.txt;
done

# Để nhanh thì dừng ở Bước 4 rồi mở `screen`.
# Thêm `head` và `tail` vào đoạn `less LangList.txt` để chia.
# Kiểu như:
# for i in `less LangList.txt | head -n 2000 | tail -n 1000`
# để tải đoạn từ 1000 đến 2000
# Nhớ đổi tên 'DL.txt' cho mỗi đoạn

Đây tải về hết rồi, 65M thôi. Nhưng mà phải đợi rảnh rỗi, học lại Perl rồi thì may ra mới có thể phân tách dữ liệu. Sau đó lại phải chuyển ra định dạng MySQL để tiện bề khai thác. Có cái tập tin LanguageCodes.tab kia cũng đỡ.

Mà cũng chẳng biết lúc nào rảnh rỗi 🙁