2013-11-28 4 views
0

Красивый суп отлично работает на локальной машине, но не работает на другом сервере.Красивый суп, возвращающий пустой набор

import urllib2 
import bs4 

url = urllib2.urlopen("http://www.google.com") 
html = url.read() 
soup = bs4.BeautifulSoup(html) 

print soup 

Печать Html выводит веб-страницу google правильно. Печатный суп возвращается пустым.

На местном уровне он отлично работает, однако на этой машине redhat он возвращается пустым.

Это как-то связано с установкой парсера? Я искал некоторые другие возможные решения, и они упомянули об установке парсера, но пока не повезло.

Это решение Beautiful Soup returning nothing не относится к моей проблеме

+0

хорошо, каковы различия между локальной машиной и на сервере? – bchhun

+0

Насколько я понял ваш вопрос, на обеих машинах html читается нормально, но на вашем локальном компьютере вы получаете некоторый вывод из bs4, а на сервере ничего не получается. Вы получаете «Нет» или пустую строку? –

+0

Локальный работает под управлением windows, python 2.7. Сервер работает redhat python 2.7 – Darthyogurt

ответ

0

Просто, чтобы доказать вам, что ваш случай является уникальным и не имеет ничего общего с Redhat.

Я вытащил экземпляр микро-Redhat из AWS, и вот полный процесс из SSH в новые машины Redhat. enter image description here

(1) Здесь я установил beautifulsoup4 на новой машине:

$ ssh -i key.pem [email protected] 
The authenticity of host 'awsip' cant be established. 
RSA key fingerprint is .... 
Are you sure you want to continue connecting (yes/no)? yes 
Warning: Permanently added 'awsip' (RSA) to the list of known hosts. 
[[email protected] ~]$ sudo easy_install beautifulsoup4 
Searching for beautifulsoup4 
Reading http://pypi.python.org/simple/beautifulsoup4/ 
... 
Installed /usr/lib/python2.6/site-packages/beautifulsoup4-4.3.2-py2.6.egg 
Processing dependencies for beautifulsoup4 
Finished processing dependencies for beautifulsoup4 

(2) Я открыл питона и получить выход из Google как в html и soup

[[email protected] ~]$ python 
Python 2.6.6 (r266:84292, May 27 2013, 05:35:12) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import urllib2 
>>> from bs4 import BeautifulSoup 
>>> html = urllib2.urlopen("http://www.google.com").read() 
>>> soup = BeautifulSoup(html) 
>>> print html[:100] 
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage"><head><meta content="Search t 
>>> print soup.prettify()[:100] 
<!DOCTYPE html> 
<html itemscope="" itemtype="http://schema.org/WebPage"> 
<head> 
    <meta content="Se 

Для отладки это ошибка urllib2 или bs4: попробуйте запустить этот код:

from bs4 import BeautifulSoup 

html = """ 
<html> 
<head> 
</head> 
<body> 
<div id="1">numberone</div> 
<div id="2">numbertwo</div> 
</body> 
</html> 
""" 

print BeautifulSoup(html).find('div', {"id":"1"}) 

Если BeautifulSoup успешно установлено, вы получите ожидаемый результат, как показано ниже:

<div id="1">numberone</div> 
+0

Спасибо! Я также использую aws. Это довольно запутанная установка, поскольку она используется другими помощниками на работе. Я думаю, что один из моих вопросов будет заключаться в том, как найти проблему, почему красивый суп не работает. – Darthyogurt

+0

@ Дартигурт. В этом процессе есть два основных шага. Сначала загрузите html с помощью urllib2, а затем создайте дерево с помощью beautifulsoup. Возможно, вы можете жестко установить простой html-файл и посмотреть, будет ли beautifulsoup строить дерево. См. Обновленный пост. –

+0

Итак, я скопировал образец кода, и запуск сценария возвращает None. Я предполагаю, что это проблема bs4. Что странно, потому что оно не вызывает никаких ошибок. – Darthyogurt

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