使用pyxll将Python集成到Excel中... lxml模块出现问题

2 投票
2 回答
707 浏览
提问于 2025-04-20 16:46

我刚开始学习python,想从网上获取一个单词的意思。单独运行的python代码没问题。

    from lxml import html
    import requests
    url = "http://dictionnaire.reverso.net/francais-definition/"
    word = raw_input("please enter the word you want to translate ")
    url = url + word
    page = requests.get(url)
    tree= html.fromstring(page.text)
    translation = tree.xpath('//*[@id="ID0EYB"]/text()')
    print translation

请注意,我使用的xpath只是为了测试。对于像“manger”、“gonfler”等简单单词,它工作得很好。接下来,我想用pyxll这个Excel插件,在Excel里创建一个函数来完成同样的任务。

   from pyxll import xl_func
   from lxml import html
   import requests
   @xl_func("string x: string")
   def traduction(x):
           url = "http://dictionnaire.reverso.net/francais-definition/"
           url = url + x
           page = requests.get(url)
           tree= html.fromstring(page.text)
           translation = tree.xpath('//*[@id="ID0EYB"]/text()')
           return translation

但是,当我启动Excel时,出现了一个错误。在pyxll的日志文件中,错误描述如下:

  2014-09-09 17:02:41,845 - ERROR : Error importing 'worksheetfuncs': DLL load failed: Le module spécifié est introuvable.
  2014-09-09 17:02:41,845 - ERROR : Traceback (most recent call last):
  2014-09-09 17:02:41,845 - ERROR :   File "pyxll", line 791, in _open
  2014-09-09 17:02:41,845 - ERROR :   File "\pyxll\examples\worksheetfuncs.py", line 317, in <module>
  2014-09-09 17:02:41,845 - ERROR :     from lxml import html
  2014-09-09 17:02:41,846 - ERROR :   File "C:\Python27\lib\site-packages\lxml\html\__init__.py", line 42, in <module>
  2014-09-09 17:02:41,846 - ERROR :     from lxml import etree
  2014-09-09 17:02:41,846 - ERROR : ImportError: DLL load failed: Le module spécifié est introuvable.
  2014-09-09 17:02:41,888 - WARNING : pydevd failed to import - eclipse debugging won't work
  2014-09-09 17:02:41,888 - WARNING : Check the eclipse path in \pyxll\examples\tools\eclipse_debug.pyc
  2014-09-09 17:02:41,890 - INFO : callbacks.license_notifier: This copy of PyXLL is for evaluation or non-commercial use only

我之前用过带API的翻译网站做类似的事情,效果很好。对我来说,真正的问题在于解析,我用了lxml,但看起来lxml和pyxll不兼容。求助啊!!!

2 个回答

0

你安装过 pywin32 吗?这个东西是让Python能够和像Excel这样的Windows应用程序进行互动的必备工具。

0

我换用了urllib2和beautifulsoup,这两个工具在pyxll中运行得很好。下面是一个可以在Excel中使用的数组函数代码,它可以输入多个单词并输出两个意思。不过,我现在用的CSS选择器太严格了,我还没找到一个合适的模式来从网站上获取任何单词的意思。

from pyxll import xl_func
import urllib2
from bs4 import BeautifulSoup
@xl_func("var[] x: var[]")
def dictionnaire(x):
    height = len(x)
    meanings = []
    for i in range(height):
        word = x[i][0]
        row = []
        url = "http://dictionnaire.reverso.net/francais-definition/"
        url = url + word
        page = urllib2.urlopen(url)
        soup = BeautifulSoup(page)
        results = soup.select("#ID0ENC")
        row.append(results[0].get_text())
        row.append(results[1].get_text())
    meanings.append(row)
    return meanings

撰写回答