在学习书上用userAgent访问网页的时候,由于遇到的网页是tut-8编码的,保存的时候遇到了问题,之前解决的方法是写文件的时候二进制写入即可,这次因为还有str要写入,想了老久才想到网页可以两次打开来避免这个报错,代码如下
import urllib.request
import userAgent
'''userAgent.py 是个自定义的模块,位置位于当前目录下'''
class urllibModifyHeader(object):
'''使用urllib模块修改header'''
def __init__(self):
#这个是PC+IE的userAgent
pcUA = userAgent.pcUserAgent.get('360浏览器')
#这个是Mobile+UC标准 的userAgent
mbUA = userAgent.mobileUserAgent.get('UC标准')
#访问新浪网首页
self.url='http://www.sina.com.cn/'
self.useUserAgent(pcUA,1)
self.useUserAgent(mbUA,2)
def useUserAgent(self,userAgent,name):
request=urllib.request.Request(self.url)
request.add_header(userAgent.split(':')[0],userAgent.split(':')[1])
response = urllib.request.urlopen(request)
filename = str(name)+'.html'
# 两次打开文件的方式不一样
fp =open(filename,'w')
fp.write('%s\n\n' %userAgent)
fp.close()
fp =open(filename,'ab')
html=response.read()
fp.write(html)
fp.close()
if __name__ == '__main__':
umh = urllibModifyHeader()