- #!/usr/bin/env python
- # encoding=utf8
- from htmlParser import HTMLParser
- import os
- import requests
- import shutil
- __author__ = 'sofn'
- urlpath = "http://www.360kb.com/kb/2_122.html"
- hostsBack = "/etc/hosts_back"
- hosts = "/etc/hosts"
- class MyHTMLParser(HTMLParser):
- def __init__(self):
- HTMLParser.__init__(self)
- self.hosts = []
- self.got = False
- self.start = False
- self.onehost = {}
- self.first = False
- def handle_startendtag(self, tag, attrs):
- if tag == "br" and len(attrs) == 0:
- self.got = True
- self.first = True
- def handle_data(self, data):
- data = data.strip()
- if self.got and self.start and data:
- if self.first:
- self.onehost["ip"] = data
- self.first = False
- else:
- self.onehost["host"] = data
- self.hosts.append(self.onehost)
- self.onehost = {}
- if not self.start and data == "#base services":
- self.start = True
- if self.start and data == "#google hosts 2014 end":
- self.start = False
- if __name__ == "__main__":
- text = requests.get(urlpath).text
- hp = MyHTMLParser()
- hp.feed(text)
- hp.close()
- datas = hp.hosts
- if not os.path.exists(hostsBack):
- print("backup hosts")
- shutil.copy(hosts, hostsBack)
- else:
- if os.path.exists(hosts):
- os.remove(hosts)
- hostsFile = open(hosts, "a")
- with open(hostsBack) as f:
- print("write base")
- hostsFile.write(f.read())
- hostsFile.close()
- hostsFile = open(hosts, "a")
- hostsFile.write("\\r\\n")
- for one in datas:
- print("append " + one["ip"] + " " + one["host"])
- hostsFile.write(one["ip"] + " " + one["host"] + "\\r\\n")
- hostsFile.close()
- #该片段来自于http://www.codesnippet.cn/detail/1712201411308.html
来源: http://www.codesnippet.cn/detail/1712201411308.html