Почему я получаю так много предупреждений и ошибок при использовании IMDbPY? - PullRequest
4 голосов
/ 18 марта 2011

Я использую IMDbPY для извлечения данных из IMDb. Я получаю правильные результаты, и все выглядит хорошо, за исключением одного: что бы я ни делал, я получаю предупреждения. Результаты хороши, но они появляются только после длинного списка предупреждений и иногда ошибок.

Например: следующий код должен напечатать Resevior Dogs (1992) :

import imdb
db = imdb.IMDb()
movie_obj = db.search_movie('pulp fiction')[0]
db.update(movie_obj)
print movie_obj['long imdb canonical title']

Это так, но не до следующих предупреждений и ошибок:

2011-03-18 00:33:11,490 WARNING [imdbpy.parser.http.domparser] C:\Python27\lib\site-packages\imdb\parser\http\utils.py:459: unable to use "lxml": No module named lxml.html
2011-03-18 00:33:11,507 WARNING [imdbpy.parser.http.domparser] C:\Python27\lib\site-packages\imdb\parser\http\utils.py:450: falling back to "beautifulsoup"
2011-03-18 00:33:13,483 WARNING [imdbpy.parser.http.domparser] C:\Python27\lib\site-packages\imdb\parser\http\utils.py:459: unable to use "lxml": No module named lxml.html
2011-03-18 00:33:13,483 WARNING [imdbpy.parser.http.domparser] C:\Python27\lib\site-packages\imdb\parser\http\utils.py:450: falling back to "beautifulsoup"
2011-03-18 00:33:15,137 ERROR [imdbpy.parser.http.domparser] C:\Python27\lib\site-packages\imdb\parser\http\utils.py:566: DOMHTMLMovieParser: caught exception extracting XPath "//div[@id='tn15title']//span[starts-with(text(), 'TV series')]"
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\imdb\parser\http\utils.py", line 555, in xpath
    xpath_result = element.xpath(path)
  File "C:\Python27\lib\site-packages\imdb\parser\http\bsouplxml\etree.py", line 57, in xpath
    return path.apply(node)
  File "C:\Python27\lib\site-packages\imdb\parser\http\bsouplxml\bsoupxpath.py", line 113, in apply
    nodes = step.apply(nodes)
  File "C:\Python27\lib\site-packages\imdb\parser\http\bsouplxml\bsoupxpath.py", line 287, in apply
    found = filter(checker, found)
  File "C:\Python27\lib\site-packages\imdb\parser\http\bsouplxml\bsoupxpath.py", line 331, in __call__
    return self.__filter(node)
  File "C:\Python27\lib\site-packages\imdb\parser\http\bsouplxml\bsoupxpath.py", line 360, in __starts_with
    first = node.contents[0]
IndexError: list index out of range
2011-03-18 00:33:16,785 WARNING [imdbpy.parser.http.domparser] C:\Python27\lib\site-packages\imdb\parser\http\utils.py:459: unable to use "lxml": No module named lxml.html
2011-03-18 00:33:16,785 WARNING [imdbpy.parser.http.domparser] C:\Python27\lib\site-packages\imdb\parser\http\utils.py:450: falling back to "beautifulsoup"
2011-03-18 00:33:16,849 WARNING [imdbpy.parser.http.domparser] C:\Python27\lib\site-packages\imdb\parser\http\utils.py:459: unable to use "lxml": No module named lxml.html
2011-03-18 00:33:16,849 WARNING [imdbpy.parser.http.domparser] C:\Python27\lib\site-packages\imdb\parser\http\utils.py:450: falling back to "beautifulsoup"

Почему я это понимаю? Я что-то не так делаю?

1 Ответ

2 голосов
/ 18 марта 2011

Ну, это довольно очевидно:

невозможно использовать "lxml": ни один модуль с именем lxml.html

Можете ли вы сделать это, чтобы проверить, существует ли модуль?

  1. В терминале или командной строке введите python.
  2. Опубликовать вывод первой строки (например, Python 2.6.6 (r266...).
  3. В оболочке введите import lxml.
  4. Далее попробуйте import lxml.html.

Для меня вот что происходит:

blender@desktop:~$ python
Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import lxml
>>> import lxml.html
>>> 

У меня установлен модуль, поэтому я не получаю вывод (он успешно импортирован).

...