2014-09-09 6 views
2

저는 Python을 처음 사용합니다. 나는 인터넷에서 한 단어의 의미를 얻으려고 노력하고있다. 독립형 파이썬 코드는 잘 작동합니다.pyxll을 사용하여 python을 excel로 통합 ... lxml 모듈에 문제가 발생했습니다.

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 addin을 사용하여 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은 함께 사용하지 않는 것 같다. 도와주세요!!!

+0

예제 코드에서 들여 쓰기를 수정하십시오. –

답변

0

pywin32을 설치 했습니까? Python이 Excel과 같은 Windows 응용 프로그램과 상호 작용하는 데 필요합니다.

+0

안녕하세요 ... 저는 pywin32를 설치했습니다. 여전히 작동하지 않습니다. 오류를 업데이트했습니다. –

+0

[pyxll 포럼] (https://www.pyxll.com/_forum/index.php?topic=82.msg145#msg145)에서 인용 함 "msvcrt90.dll을 찾을 수 없다고 기대합니다. (.. . 어디서나 있는지 확인할 수 있습니까? (가능하면 C : \ Python27) C : \ Windows \ System32에없는 경우 복사하여 거기에 복사하여 문제가 해결되는지 확인하십시오. DLL을로드 할 수 없다는 것을 다음으로 확인해야합니다. 문제가있는 .pyd 파일에 종속성 워커 (www.dependencywalker.com)를 사용하여 DLL 종속성을 확인할 수 있습니다. " Python34를 사용하고 있습니다. 생각은 같지만 아이디어는 같습니다 – walexnelson

+0

Python34 참조를 무시하십시오. 오류 출력에서 ​​Python27을 사용하고 싶다. – walexnelson

0

나는 pyxll과 잘 작동하는 urllib2와 beautifulsoup로 전환했다. 아래는 여러 단어를 취하고 두 가지 의미를 나타내는 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 
관련 문제