无法使用BS4

时间:2017-07-05 21:02:51

标签: python python-3.x svg xml-parsing beautifulsoup

我有两个世界的SVG地图,已下载here。我的目标是在python中对这些地图进行一些编辑,通过BeautifulSoup4与它们一起工作。这与低分辨率文件(132.5 Kb)完美配合。但是,当我尝试将其与高分辨率文件(1.2 Mb)一起使用时,BS4解析器(使用lxml)完全失败。

代码是这样的:

    import lxml
    from bs4 import BeautifulSoup as Soup
    with open('worldHigh.svg','r') as f:
        handler = f.read()
        soup = Soup(handler,'xml')
        print(soup.prettify())

当我使用worldHigh.svg fifle运行时,唯一打印的是

<?xml version="1.0" encoding="utf-8"?>

当我运行等效的,但更改worldLow.svg的worldHigh.svg时,它会正确打印XML(根据需要)。

两个SVG文件在自己打开时工作正常(即,它们显示地图)。但是,当我尝试解析它时,一个失败,另一个成功。我对于出了什么问题感到茫然。我会理解,如果解析器在大尺寸下失败,但1.2 MB似乎并不大。

1 个答案:

答案 0 :(得分:1)

XML解析器需要未编码字节的原始序列。解析XML时使用open(...,'rb')

一个工作而另一个没工作的原因worldHigh.svg在文件开头有一个BOM。