如何过滤输出结果并设置范围?



我正在制作一个西班牙语 - 英语词典爬虫。

我希望# 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()

最新更新