Index: python-pattern-2.6+git20150109/pattern/web/__init__.py
===================================================================
--- python-pattern-2.6+git20150109.orig/pattern/web/__init__.py
+++ python-pattern-2.6+git20150109/pattern/web/__init__.py
@@ -36,7 +36,7 @@ import simplejson as json
 import locale
 
 import feedparser
-import BeautifulSoup
+import bs4 as BeautifulSoup
 
 try:
     # Import persistent Cache.
Index: python-pattern-2.6+git20150109/test/test_web.py
===================================================================
--- python-pattern-2.6+git20150109.orig/test/test_web.py
+++ python-pattern-2.6+git20150109/test/test_web.py
@@ -308,7 +308,9 @@ class TestPlaintext(unittest.TestCase):
           ( "<p>text</p>",     "text\n\n"),
           ( "<li>text</li>",   "* text\n"),
           ( "<td>text</td>",   "text\t"),
-          ( "<br /><br/><br>", "\n\n\n")):
+          ( "<br>", "\n"),
+          ( "<br/>", "\n\n"),
+          ( "<br /><br/><br>", "\n\n\n\n\n")):
             self.assertEqual(web.strip_tags(html), plain)
         # Assert exclude tags and attributes
         v = web.strip_tags("<a href=\"\" onclick=\"\">text</a>", exclude={"a": ["href"]})
@@ -749,17 +751,17 @@ class TestDOM(unittest.TestCase):
         # Assert Node properties.
         v1 = web.Document(self.html)
         self.assertEqual(v1.type, web.DOCUMENT)
-        self.assertEqual(v1.source[:10], "<!doctype ") # Note: BeautifulSoup strips whitespace.
+        self.assertEqual(v1.source[:10], "<!DOCTYPE ") # Note: BeautifulSoup strips whitespace.
         self.assertEqual(v1.parent, None)
         # Assert Node traversal.
         v2 = v1.children[0].next
-        self.assertEqual(v2.type, web.TEXT)
+        self.assertEqual(v2.type, web.ELEMENT)
         self.assertEqual(v2.previous, v1.children[0])
         # Assert Document properties.
         v3 = v1.declaration
         self.assertEqual(v3, v1.children[0])
         self.assertEqual(v3.parent, v1)
-        self.assertEqual(v3.source, "<!doctype html>")
+        self.assertEqual(v3.source, "html")
         self.assertEqual(v1.head.type, web.ELEMENT)
         self.assertEqual(v1.body.type, web.ELEMENT)
         self.assertTrue(v1.head.source.startswith("<head"))
@@ -783,7 +785,7 @@ class TestDOM(unittest.TestCase):
         v = web.DOM(self.html).body
         self.assertEqual(v.tag, "body")
         self.assertEqual(v.attributes["id"], "front")
-        self.assertEqual(v.attributes["class"], "comments")
+        self.assertEqual(v.attributes["class"], ["comments"])
         self.assertTrue(v.content.startswith("\n<script"))
         # Assert Element.getElementsByTagname() (test navigation links).
         a = v.by_tag("a")
@@ -794,8 +796,8 @@ class TestDOM(unittest.TestCase):
         # Assert Element.getElementsByClassname() (test <p class="comment">).
         a = v.by_class("comment")
         self.assertEqual(a[0].tag, "p")
-        self.assertEqual(a[0].by_tag("span")[0].attributes["class"], "date")
-        self.assertEqual(a[0].by_tag("span")[1].attributes["class"], "author")
+        self.assertEqual(a[0].by_tag("span")[0].attributes["class"], ["date"])
+        self.assertEqual(a[0].by_tag("span")[1].attributes["class"], ["author"])
         for selector in (".comment", "p.comment", "*.comment"):
             self.assertEqual(v.by_tag(selector)[0], a[0])
         # Assert Element.getElementById() (test <div id="content">).
