2015-05-04 3 views
1

У меня есть следующий скрипт, запущенный на моем Ubuntu Server 15.04 VPS, и он отлично работает. Я настраиваю его на мой малиновый Pi (полностью обновленный Raspbian Wheezy), но BeautifulSoup4 не обнаруживает элементы страницы, как это делает на VPS. Ниже приведены код и трассировка. Почему эта ошибка происходит на моем Pi, но не на моем VPS?BeautifulSoup4 работает правильно на Ubuntu, но не на Raspbian

Вот соответствующий фрагмент кода. Среди прочего, os, BeautifulSoup (from bs4) и requests импортированы. Строки 5 и ниже находятся внутри цикла (фактический скрипт пересекает словарь, чтобы проверить все устройства); Я подтвердил, что a) приведенные ниже команды - это то, что на самом деле выполняется, и b) выполнение того же самого кода работает на VPS (данные возвращаются), но не на Pi (выдает ошибку).

page = requests.get('https://developers.google.com/android/nexus/images') 
soup = BeautifulSoup(page.text) 

# loop starts here 
cur = "/var/www/nexus_temp/shamu.html" 
try: 
    os.remove(cur) 
except OSError: 
    pass 

g = open(cur, 'wb') 
data = str(soup.select("h2#shamu ~ table")[0]) 
g.write(data) 
g.close() 

Traceback:

Traceback (most recent call last): 
    File "./nimages.py", line 40, in <module> 
    data = str(soup.select("h2#shamu ~ table")[0]) 
IndexError: list index out of range 

Запуск скрипта из командной строки Python и делать print soup.select("h2#shamu ~ table") просто возвращает [], но print soup.find_all('h2') возвращает все <h2> элементов на странице, как полагается. Печать page.text действительно возвращает полный исходный код страницы, как и soup.prettify().

ответ

0

Возможно, это проблема с версией в отношении используемой версии Python. Вы можете попробовать Scrapy, используя HtmlXPathSelector, вы можете заставить его работать [Scrapy работает на Python2.7], я сделал Scrapy работу над RPi, поэтому я могу гарантировать, что это сработает.

Смежные вопросы