OSDN Git Service

add __eq__() to HTMLElement
authorHiromichi MATSUSHIMA <hirom@office-sv.osdn.jp>
Fri, 15 Jul 2011 10:06:05 +0000 (19:06 +0900)
committerHiromichi MATSUSHIMA <hirom@office-sv.osdn.jp>
Fri, 15 Jul 2011 10:06:05 +0000 (19:06 +0900)
htmltree.py
test/sample.html
test/test_base.py

index 0678a11..a98c0e0 100644 (file)
@@ -99,6 +99,9 @@ class HTMLElement(list):
         else:
             return "<UNKNOWN>"
 
+    def __eq__(self, other):
+        return id(self) == id(other)
+
     def _attrs2str(self):
         str = []
         f = lambda x,y: x if y == None else "%s='%s'" % (x,y)
@@ -170,6 +173,17 @@ class HTMLElement(list):
         for i in self:
             i._r_get_elements_by_class(cls, buf)
 
+    def get_elements(self, name, attrs):
+        elems = self.get_elements_by_name(name)
+        results = []
+        for elem in elems:
+            for name in attrs:
+                if elem.get_attribute(name, "") != attrs[name]:
+                    break
+            else:
+                results.append(elem)
+        return results
+
     # manipulation functions
     def append_tag(self, tag, attrs):
         elem = HTMLElement(HTMLElement.TAG, tag, attrs)
index cbf0943..535f5c8 100644 (file)
@@ -3,6 +3,7 @@
 <head> 
 <title>htmltree.py sample html</title> 
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
+<link rel="stylesheet" type="text/css" href="main.css"> 
 </head> 
 <body id="htmltree" class="content">
 <div class="main-column">
index ac573c0..fd69bd2 100644 (file)
@@ -37,9 +37,18 @@ print t.inner_html()
 t = r.select_1st("#header1")
 print t.inner_html()
 
-r.remove_element(t)
+print "test_remove"
+attrs = {
+    "rel": "stylesheet",
+    "type": "text/css",
+    "href": "main.css"
+    }
+elems = r.get_elements("link", attrs)
+for elem in elems:
+    elem.delete()
 print r.inner_html()
 
 t = r.select_1st("#htmltree")
 t.delete()
 print r.inner_html()
+