我正在制作一个西班牙语 - 英语词典爬虫。
我希望# Part of Speech
只在<div id="dictionary-neodict-es">
范围内获得结果。
import requests
from bs4 import BeautifulSoup
from collections import OrderedDict
base_url = "https://www.spanishdict.com/translate/"
search_keyword = input("input the keyword : ")
url = base_url + search_keyword
spanishdict_r = requests.get(url)
spanishdict_soup = BeautifulSoup(spanishdict_r.text, 'html.parser')
# Phonetic Alphabet
print(spanishdict_soup.find("span", {"id": "dictionary-link-es"}).text)
# Part of Speech
part_of_speech = dict.fromkeys([x.text for x in spanishdict_soup.find_all("a", {"class": "href--2RDqa"})]).keys()
for part in part_of_speech:
print(part)
# Meaning
print(spanishdict_soup.find("div", {"id": "quickdef1-es"}).text)
我之所以告诉你这个是因为 SpanishDict.com 网站上有三个字典定义。
1. Curiosity Media Inc.
<div id="dictionary-neodict-es">
2. Harrap Publishers Limited
<div id="dictionary-neoharrap-es">
3. Collins Complete Spanish Electronic Dictionary © HarperCollins Publishers 2011
<div id="dictionary-collins-es">
首先,您可以从© Curiosity Media Inc.
中看到定义。 然后,您也可以检查其他字典的定义。 所以我只想从© Curiosity Media Inc.
收集物品.
例如,模型的Deifinition
当我搜索modelo
时,我的爬虫实际上显示:
(moh-deh-loh)
masculine or feminine noun
masculine noun
adjective
Noun
model
男性或女性名词<--来自"dictionary-neodict-es" OK
男性名词<--来自"字典-新词典-es" OK
形容词<——来自"字典-新词典-es" OK
名词 <-- 从另一个词典的标签"dictionary-neoharrap-es"收集,因此不应显示(或不解析(
模型<--从"字典-新词典-es"确定
所以,我的爬虫应该给我的结果
(moh-deh-loh)
masculine or feminine noun
masculine noun
adjective
model
请帮我解决这个问题。 谢谢。
您可以添加dictionary-neodict-es
标签。
然后在此范围内找到要查找的内容。
# add dictionary-neodict-es tag
dictionary_neodict_es = spanishdict_soup.find("div", {"id": "dictionary-neodict-es"})
# use dictionary_neodict_es to find you need
dictionary_link_es = dictionary_neodict_es.find("span", {"id": "dictionary-link-es"})
part_of_speech = dict.fromkeys([x.text for x in dictionary_neodict_es.find_all("a", {"class": "href--2RDqa"})]).keys()