python爬取网站数据保存使用的方法
编码问题 复制代码 代码如下: >>> str=u'中文' >>> str1=str.encode('utf8') >>> str2=str.encode('gbk') >>> print repr(str) u'u4e2du6587' >>> print repr(str1) 'xe4xb8xadxe6x96x87' >>> print repr(str2) 'xd6xd0xcexc4' 可以看到,其实存储在计算机中的只是这样的编码,而不是一个一个的汉字,在print的时候要知道当时是用的什么样的编码方式,才能正确的print出来。有一个说法提得很好,python中的Unicode才是真正的字符串,而string是字节串 复制代码 代码如下: #coding:gbk str=u'汉' str1=str.encode('utf8') str2=str.encode('gbk') str3='汉' print repr(str) print repr(str1) print repr(str2) print repr(str3) 提示错误 File "test.py",line 1 SyntaxError: Non-ASCII character 'xe6' in file test.py on line 1,but no encodi ng declared; see http://www.python.org/peps/pep-0263.html for details 改为 复制代码 代码如下: #coding:utf8 str=u'汉' str1=str.encode('utf8') str2=str.encode('gbk') str3='汉' print repr(str) print repr(str1) print repr(str2) print repr(str3) 输出正常结果 u'u6c49' 'xe6xb1x89' 'xbaxba' 'xe6xb1x89' 基本方法 复制代码 代码如下: import urllib2 page=urllib2.urlopen('url').read() 这样就可以获得到页面的内容。接下来再用正则匹配去匹配所需要的内容就行了。 复制代码 代码如下: import urllib,urllib2,cookielib cookiejar = cookielib.CookieJar() urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar)) 这样就装载进一个cookie,用urlOpener去open登录以后就可以记住信息。 复制代码 代码如下: def multi_open(opener,*arg): while True: retryTimes=20 while retryTimes>0: try: return opener.open(*arg) except: print '.', retryTimes-=1 正则匹配 复制代码 代码如下: #coding:utf-8# import xlwt class XLS: '''a class wrap the xlwt''' MAX_ROW=65536 MAX_SHEET_NUM=3 def __init__(self,name,captionList,typeList,encoding='utf8',flushBound=1000): self.name=name self.captionList=captionList[:] self.typeList=typeList[:] self.workbookIndex=1 self.encoding=encoding self.wb=xlwt.Workbook(encoding=self.encoding) self.sheetIndex=1 self.__addSheet() self.flushBound=flushBound def __addSheet(self): if self.sheetIndex != 1: self.wb.save(self.name+str(self.workbookIndex)+'.xls') if self.sheetIndex>XLS.MAX_SHEET_NUM: self.workbookIndex+=1 self.wb=xlwt.Workbook(encoding=self.encoding) self.sheetIndex=1 self.sheet=self.wb.add_sheet(self.name.encode(self.encoding)+str(self.sheetIndex)) for i in range(len(self.captionList)): self.sheet.write(0,i,self.captionList[i]) self.row=1 def write(self,data): if self.row>=XLS.MAX_ROW: self.sheetIndex += 1 self.__addSheet() for i in range(len(data)): if self.typeList[i]=="num": try: self.sheet.write(self.row,float(data[i])) except ValueError: pass else: self.sheet.write(self.row,data[i]) if self.row % self.flushBound == 0: self.sheet.flush_row_data() self.row+=1 def save(self): self.wb.save(self.name+str(self.workbookIndex)+'.xls') 转换网页特殊字符 复制代码 代码如下: html_escape_table = { "&": "&", '"': """, "'": "'", ">": ">", "<": "<", u"?":"·", u"°":"°", #regular expression ".":r".", "^":r"^", "$":r"$", "{":r"{", "}":r"}", "":r"", "|":r"|", "(":r"(", ")":r")", "+":r"+", "*":r"*", "?":r"?", } def html_escape(text): """Produce entities within text.""" tmp="".join(html_escape_table.get(c,c) for c in text) return tmp.encode("utf-8") 结 您可能感兴趣的文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |