如何抓取etymonline的詞根與解釋?

http://etymonline.com是個非常好的查詞根的網站,請問如何用python查詢並抓取對應的詞根解釋呢(查詢後會有多條相關解釋)

如圖,比如查churn,結果會有多個詞條,需要的的只是頭兩條相關的,如果查的詞只有名詞詞性就是一條了


剛開始學BeautifulSoup,對著API擼的。
print語句里轉碼成GBK是為了避免CMD輸出時拋ERROR。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""抓取詞根與解釋
http://etymonline.com/
"""

import requests, sys
from bs4 import BeautifulSoup

def query(etyma):
url = r"http://etymonline.com/index.php?allowed_in_frame=0search={0}searchmode=none"
url = url.format(etyma)
return requests.get(url).text

def get_data(etymas):
for etyma in etymas:
html = query(etyma)
soup = BeautifulSoup(html, "lxml")
datas = soup.find_all(name=lambda x: x and "a" == x.name and not x.has_attr(
"class"), text=lambda x: x and (etyma + " ") in x)
for data in datas:
word = data.string
desc = "".join(data.find_next(name="dd").strings)
print("單詞:", word.encode("gbk", errors = "ignore").decode("gbk"))
print("釋義:", desc.encode("gbk", errors = "ignore").decode("gbk"), end="
"*2)

if __name__ == "__main__":
etymas = []
if len(sys.argv) &> 1:
etymas.extend(sys.argv[1:len(sys.argv)])
else:
etymas = ["churn", "anti", "abs"]
print("沒有輸入單詞,下面演示查詢:", "、".join(etymas), end = "
"*2)
get_data(etymas)

把文件另存為etyma.py,放入PythonScript文件夾,然後把這個目錄加入環境變數。
文件名可以自由更改,只要和下面的命令保持一致即可。

用法:


你的問題是: 把字根(詞源)意義(也就是 "…")裡面的字去比對 一般詞典的解釋,然後依意思分類嗎?但是古代的詞義不太可能全部和現代一樣


推薦閱讀:

網路技術不斷進步,我們還有隱私么?
豆瓣robots.txt為什麼只專門提到豌豆莢的useragent?
只精通爬數據這個技能,以後能有大的發展嗎?
如何獲取鬥魚直播間的彈幕信息?
有免費的網路爬蟲軟體使用嗎?

TAG:程序員 | Python | 爬蟲計算機網路 | 英語詞根 |