У меня есть следующий скрипт, запущенный на моем 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()
.