在CGI中使用BeautifulSoup而无需安装

时间:2014-12-07 09:34:04

标签: python module ftp beautifulsoup cgi

我正在尝试在Python中构建一个简单的scraper,它将通过CGI在Web服务器上运行。基本上它将返回由URL中传递给它的参数确定的值。我需要BeautifulSoup来处理Web服务器上的HTML页面。但是,我使用的是HelioHost,它没有给我shell访问权限或pip等。我只能使用FTP。一个BS网站,它说你可以直接提取它并使用它而无需安装。

所以我在Win7机器上获得了tarball,使用7-zip删除bz2压缩,然后使用tar压缩,这给了我一个bs4文件夹和一个setup.py文件。我通过ftp将完整的bs4文件夹传输到python脚本所在的cgi-bin目录。我的脚本代码是:

#!/usr/bin/python
import cgitb
cgitb.enable()


import urllib
import urllib2
from bs4 import *

print "Content-type: text/html\n\n"
print "<html><head><title>CGI Demo</title></head>"
print "<h1>Hello World</h1>"
print "</html>"

但它给了我一个错误:

 /home/poiasd/public_html/cgi-bin/lel.py
    6 import urllib
    7 import urllib2
    8 from bs4 import *
    9 
   10 print "Content-type: text/html\n\n"
bs4 undefined
SyntaxError: invalid syntax (__init__.py, line 29) 
      args = ('invalid syntax', ('/home/poiasd/public_html/cgi-bin/bs4/__init__.py', 29, 6, 'from .builder import builder_registry\n')) 
      filename = '/home/poiasd/public_html/cgi-bin/bs4/__init__.py' 
      lineno = 29 
      msg = 'invalid syntax' 
      offset = 6 
      print_file_and_line = None 
      text = 'from .builder import builder_registry\n'

如何通过CGI使用bs4模块?我该如何安装但不安装它?我可以将我在PC上使用的BeautifulSoup转换为包含所有代码的小BeautifulSoup4.py吗?

1 个答案:

答案 0 :(得分:0)

您正在使用的Python版本尚不支持PEP 328 Relative Imports;例如Python 2.4或更早版本。 BeautifulSoup 4需要Python 2.7或更高版本。

据推测,您无法升级到较新的Python版本。在这种情况下,您可以尝试使用BeautifulSoup 3;它会有一些错误,你会丢失一些功能,但至少你可以解决语法错误。

但是,我注意到HelioHost会list Python 2.7 as supported