Как отфильтровать выходной результат и настроить диапазон? - PullRequest
0 голосов
/ 09 января 2020

Я создаю сканер словаря Spani sh -Engli sh.

Я хочу, чтобы # 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..

, например, определение modelo

Мой сканер действительно отображается при поиске modelo:

(moh-deh-loh)
masculine or feminine noun
masculine noun
adjective
Noun
model

существительное мужского или женского рода <- из "dictionary-neodict-es" OK </p>

существительное мужского рода <- из "dictionary-neodict-es" OK </p>

прилагательное <- из "dictionary-neodict-es" OK </p>

Существительное <- собрано из тега другого словаря "dictionary-neoharrap-es", поэтому его не следует отображать (или не анализировать) </p>

model <- from "dictionary-neodict-es" OK </p>

Итак, мой сканер должен дать мне результат в виде

(moh-deh-loh)
masculine or feminine noun
masculine noun
adjective
model

Пожалуйста, помогите мне решить эту проблему. Спасибо.

1 Ответ

0 голосов
/ 09 января 2020

Вы можете добавить тег 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...