使用pyxll将Python集成到Excel中... lxml模块出现问题
我刚开始学习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