import zlib
import urllib2
import email.utils
+import json
try:
import cStringIO as StringIO
except ImportError:
import StringIO
-
-try:
- import json
-except ImportError: # Python <2.6, use trivialjson (https://github.com/phihag/trivialjson):
- import trivialjson as json
std_headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:5.0.1) Gecko/20100101 Firefox/5.0.1',
# Unknown entity in name, return its literal representation
return (u'&%s;' % entity)
-
+HTMLParser.locatestarttagend = re.compile(r"""<[a-zA-Z][-.a-zA-Z0-9:_]*(?:\s+(?:(?<=['"\s])[^\s/>][^\s/=>]*(?:\s*=+\s*(?:'[^']*'|"[^"]*"|(?!['"])[^>\s]*))?\s*)*)?\s*""", re.VERBOSE) # backport bugfix
class IDParser(HTMLParser.HTMLParser):
"""Modified HTMLParser that isolates a tag with the specified id"""
def __init__(self, id):
self.depth = {}
self.html = None
self.watch_startpos = False
+ self.error_count = 0
HTMLParser.HTMLParser.__init__(self)
+ def error(self, message):
+ print self.getpos()
+ if self.error_count > 10 or self.started:
+ raise HTMLParser.HTMLParseError(message, self.getpos())
+ self.rawdata = '\n'.join(self.html.split('\n')[self.getpos()[0]:]) # skip one line
+ self.error_count += 1
+ self.goahead(1)
+
def loads(self, html):
self.html = html
self.feed(html)