python html内容比较,比较Python中的HTML字符串

我有几个从新闻网站抓取HTML的解析器。为了确保网站的结构没有改变,我每天运行两次简单的测试:将从get_content()返回的手动确认的HTML与从get_content()返回的结果进行比较。你知道吗class TextParser(object):

def __init__(self, site, tag, prop):

self.site = site

self.tag = tag

self.prop = prop

def __call__(self, url):

soup = bs(get_resource(url), 'html.parser')

article = soup.find(self.tag, self.prop)

if article:

self.clean(article)

return article.encode_contents().strip()

def clean(self, article):

# Drop image, script, div inside content

[s.extract() for s in article(['script', 'div', 'img', 'table',

'aside'])]

# Drop comments

[element.extract() for element in

article(text=lambda text: isinstance(text, Comment))]

parsers = [

TextParser('ria.ru', 'div', {'id': 'article_full_text'}),

TextParser('ntv.ru', 'div', 'smcntr')

]

def get_resource(url):

request = urllib2.Request(url)

try:

response = urllib2.urlopen(request)

html = response.read()

except (urllib2.HTTPError, urllib2.URLError) as e:

logging.error(e)

return

finally:

response.close()

return html

def get_content(url):

site = urlparse(url).netloc.replace('www.', '')

parser = next((x for x in parsers if x.site == site), None)

if parser:

content = parser(url)

if content:

return content

else:

logging.warning('Parsing error. URL:' + url)

return None

else:

logging.warning('Missing parser. URL:' + url)

return None

if __name__ == "__main__":

content_web = get_content('http://www.ntv.ru/novosti/1608256/')

with open('texts/ntv.ru.txt', 'r') as f:

content_file = f.read()

print hashlib.md5(content_web).hexdigest()

print hashlib.md5(content_file).hexdigest()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值