Проблема с URL-кодом Python

#python #urlencode

Вопрос:

Я пытаюсь изменить файл ANKI addon .py, чтобы иметь возможность анализировать слова из Оксфорда

 from urllib.parse import urlencode
qs = urlencode({"q": "come along"})

URL = "https://www.oxfordlearnersdictionaries.com/search/english/?{}"

print(URL.format(qs))

 

мой вывод

«https://www.oxfordlearnersdictionaries.com/search/english/?q=come вместе»

но на самом деле результат должен быть таким

«https://www.oxfordlearnersdictionaries.com/definition/english/come-along?q=приходи пойдем»

как я могу преодолеть эту проблему, я довольно новичок

 #-- coding:utf-8 --
import random
from ..base import *

import requests
from bs4 import BeautifulSoup
from time import sleep
from random import randint



@register(u'Oxford_Article')
class Oxford_Article(WebService):

    def init(self):
        super(Oxford_Article, self).init()

    def _get_from_api(self):
        sleep(randint(1,3))
        
        param = {"q": "come along"}
        qs = urlencode(param)
        param['q'] = param['q'].replace(' ', '-')
        URL = "https://www.oxfordlearnersdictionaries.com/definition/english/{}?{}"
        
        data = self.get_response(URL.format(param['q'],qs))
        soup = parse_html(data)
        result = {
            'Article': u'',
        }

        # Article
        element = soup.find('div', id='entryContent')
        for s in element.select('script'):
            s.extract()
        if element:
            result['Article'] = u''.join(str(e) for e in element.contents)


        return self.cache_this(result)

    @export([u'entryContent', u'Article definition'])
    def fld_definate(self):
        return self._get_field('Article')
 

Комментарии:

1. Просто отредактируйте свой URL-адрес. Удалите последнее / и измените search на definition .

2. так что теперь у меня есть эта ссылка oxfordlearnersdictionaries.com/definition/englishq=come вместе это не работает

Ответ №1:

вы можете сделать это

 from urllib.parse import urlencode
param = {"q": "come along"}
qs = urlencode(param)
param['q'] = param['q'].replace(' ', '-')
URL = "https://www.oxfordlearnersdictionaries.com/definition/english/{}?{}"
print(URL.format(param['q'],qs))
 

Комментарии:

1. большое вам спасибо, это работает, но это не работает над этим я обновил свою тему

2. братан, я не разработчик python, я все, что я делаю, я открываю свой блокнот и изменяю связанный файл, я делаю это, чтобы иметь возможность изменять мой аддон программы ANKI

Ответ №2:

если вы получаете ошибку при анализе данных

просто замените этот код

 data = self.get_response(URL.format(param['q'],qs))
soup = parse_html(data)
 

с помощью этого кода

 page = urllib.request.urlopen(URL.format(param['q'],qs))
soup = BeautifulSoup(page)
 

также не забудьте импортировать это

 import urllib.request
 

Комментарии:

1. Я не использую для этого никакой IDE, просто модифицирую файл с помощью notepad спасибо за ваши усилия. Ценю это