Неожиданный результат вывода - PullRequest
3 голосов
/ 08 января 2020

Я столкнулся с неожиданной ситуацией.

Я собираю слова с сайта SpanishDict.com .

Например: я ищу термин niño, тогда .py дает мне результат ниже, который я точно хотел.

(nee-nyoh)
masculine or feminine noun

Но когда я ищу que, тогда .py дает мне wrong result, как показано ниже;

(kweh-behk)

соединение

Согласно определению que , .py должен был дать мне результат, как показано ниже ;

(keh)
conjunction

Так что мне интересно, что с этим не так? Есть идеи?

Спасибо

Я включил свой код ниже:

import requests
from bs4 import BeautifulSoup

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', {'class': 'dictionaryLink--369db'}).text)
# Part of Speech
print(spanishdict_soup.find('a', {'class': 'href--2RDqa'}).text)
# Meaning

Ответы [ 2 ]

2 голосов
/ 08 января 2020

Просто замените свой первый критерий поиска на:

spanishdict_soup.find("span", {"id": "dictionary-link-es"}).text
0 голосов
/ 08 января 2020

Хорошо, данные можно найти в тегах script в формате json. Это просто вопрос того, как вытащить это, а затем взять то, что вам нужно. Я не мог увидеть, где его взять из источника html, кроме как внутри тега script:

import requests
import json
from bs4 import BeautifulSoup

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')


scripts = spanishdict_soup.find_all('script')
for script in scripts:
    if 'SD_DICTIONARY_RESULTS_PROPS' in script.text:
        jsonStr = script.text
        jsonStr = jsonStr.split('global.SD_DICTIONARY_RESULTS_PROPS = ')[-1]
        jsonStr = jsonStr.rsplit(';\n')[0]
        jsonData = json.loads(jsonStr)



# Phonetic Alphabet
print(jsonData['es']['pronunciationDictionaryLink']['pronunciationSpellings'][0])
# Part of Speech
print(jsonData['es']['entry']['neodictFullQuickPartOfSpeechEn'])
# Meaning

Вывод:

input the keyword : que
keh
conjunction
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...