漂亮的汤字典html解析问题

时间:2020-09-15 05:59:17

标签: python beautifulsoup

我正在尝试使用 AnkiWeb 桌面工具在 Anki 程序上配置现有的附加组件。

问题是当我尝试使用单字查询时,它工作正常。但是,如果它不止一个单词,那么它将不起作用,因为我有一个拆分单词,应在它们之间添加+标记,如下所示:

https://www.oxfordlearnersdictionaries.com/definition/english/come-along?q=come+along

我是Python的初学者,我不知道该如何解决这个问题。

#-- 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))
        
        data = self.get_response("https://www.oxfordlearnersdictionaries.com/definition/english/{}".format(self.quote_word))
        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 个答案:

答案 0 :(得分:1)

  • if element: 检查必须在此代码块之前。

  • 来自 AnkiWeb
  • self.quote_word 已被编码,并添加了{{1} }是不必要的。

  • 您使用的网址不是通用网址,请找到支持查询的适当API。

+

插件的工作版本:

    if element:
        for s in element.select('script'):
            s.extract()
        result['Article'] = u''.join(str(e) for e in element.contents)

输出:

multiword queries