我想编写一个从网站内容创建html文件的简单代码。我正在使用beautifulsoup 4
库。使用:
BeautifulSoup
对象时
BeautifulSoup('<html></html>')
我收到此错误:
语法无效( init .py,第175行)
并且此行产生错误:
来自bs4 import BeautifulSoup
我通过执行setup.py
安装了库。
有什么问题?
我的整个代码:
import urllib.request as req
from bs4 import BeautifulSoup
def main():
get_announcements("92-93", 1, 153, 12)
def get_announcements(year, term, courseID, group):
website = req.urlopen('http://ce.sharif.edu/courses/' + year + '/' + str(term) + '/ce' + str(courseID) + '-' + str(group) + '/')
site_content = website.readall()
soup = BeautifulSoup('<html></html>')
if __name__ == '__main__':
main()
来自库文件的 init.py 中的和错误行:
try:
is_file = os.path.exists(possible_filename)
except Exception, e: #ERROR!!
# This is almost certainly a problem involving
# characters not valid in filenames on this
# system. Just let it go.
pass
答案 0 :(得分:1)
你不是太容易做到这一点,但我认为你发布的内容中有足够的信息来解决你的问题。
import urllib.request as req
此行仅在您使用Python 3.x时有效。由于您超过此行,我将假设情况属实。
except Exception, e:
这一行使用的是Python 2.x语法。您似乎试图在Python 3.x程序中导入Python 2.x库。那不行。在Python 3中,except
子句具有此语法(因此您需要as
而不是逗号):
("except" [expression ["as" target]] ":" suite)+
只是为了验证,如果我的假设是正确的,语法错误应该指示逗号作为产生问题的实际角色。
我不知道为什么会这样。我刚刚使用pip install BeautifulSoup4
安装了bs4,而我在第175行安装的版本中的代码是:
try:
is_file = os.path.exists(possible_filename)
except Exception as e:
# This is almost certainly a problem involving
# characters not valid in filenames on this
# system. Just let it go.
pass
哪个会奏效。
答案 1 :(得分:1)
我能够在Mac OSX 10.10.1上重现这个问题,它同时包含OSX上的原始Python 2.7.6和3.4.2上的Python IDLE。使用后
python3 setup.py install
我得到了同样的错误:
>>> import bs4
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Applications/Python 3.4/beautifulsoup4-4.3.2/bs4/__init__.py", line 175
except Exception, e:
^
SyntaxError: invalid syntax
安装程序可能正在读取/Library/Python/2.7/site-packages/上的默认安装目录,并假设BeautifulSoup将在Python 2.7上运行。看起来像是设置中的错误。
答案 2 :(得分:0)
可以找到解决方案here。
问题是您下载的模块是用python版本2编写的,它与您在计算机上安装的python版本具有不兼容的语法(版本3)。
要解决此问题,请使用位于的2to3.py
工具
...\Python34\Tools\Scripts
手动将bs4目录(...\beautifulsoup4-4.3.2\bs4)
中的每个python文件从版本2转换为版本3.
例如输入
'C:\Python34\Tools\Scripts\2to3.py ...\beautifulsoup4-4.3.2\bs4\__init__.py'
进入命令提示符会将__init__.py
文件从版本2转换为版本3.