鱼C论坛

 找回密码
 立即注册
查看: 1129|回复: 2

[已解决]报错UnicodeEncodeError: 'ascii' codec can't encode characters in

[复制链接]
发表于 2019-8-13 23:16:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position 334-339: ordinal not in range(128)

  1. import urllib.request
  2. import os
  3. import re


  4. def url_open(url):
  5.     head={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763'}
  6.     req=urllib.request.Request(url,headers=head)
  7.     response=urllib.request.urlopen(req)
  8.     html=response.read()
  9.     return html

  10. def url_each(url):
  11.     html=url_open(url).decode('utf-8')
  12.     each_addrs=re.findall(r'href="(/.*/.*/\d{4}\.html)',html)     #href="/meinv/qiaotun/1030.html"
  13.     return each_addrs
  14.         
  15. def save_imgs(img_addrs):
  16.     for each in img_addrs:
  17.         html=url_open(each)
  18.         with open(each[59:66]+'.jpg','wb') as f:
  19.             f.write(html)

  20. def findandsave_imgs(urlofeach=[]):
  21.     img_addrs=[]
  22.     for each in urlofeach:
  23.         for i in range(1,12):
  24.             if i==1:
  25.                 each='http://nvshen2.92demo.com'+each
  26.             else:
  27.                 each=('nvshen2.92demo.com'+each)[:-8]+'_'+str(i)+'.html'                  #http://nvshen2.92demo.com/meinv/qingchun/1042_5.html
  28.             html=url_open(each).decode('utf-8')               
  29.             img_addrs=re.findall(r' src="(http://img-2.92kaifa\.com.*\.jpg)"',html)        #src="http://img-2.92kaifa.com/nvshen/d/file/bigpic/2016/10/19/ccjec3k5ofd.jpg">
  30.             save_imgs(img_addrs)
  31.      
  32. folder='ooxx'
  33. pages=int(input('请输入页数:'))
  34. os.mkdir(folder)
  35. os.chdir(folder)
  36. url='http://nvshen2.92demo.com/index.html'
  37. for i in range(1,pages+1):
  38.     print('第%d页' % i)
  39.     if i!=1:
  40.         page_url='http://nvshen2.92demo.com/index_'+str(i)+'.html'
  41.     else:
  42.         page_url=url
  43.     urlofeach=url_each(page_url)

  44.     findandsave_imgs(urlofeach)
复制代码


不知道该怎么改,但是可参考链接:https://blog.csdn.net/songyu0120/article/details/88680562
  1. sys.stdout.encoding
  2. 'cp936'
复制代码
最佳答案
2019-8-14 10:04:19
你的python是什么版本?

检查py编码的代码:
sys.getdefaultencoding()  

试下以下代码修改py的默认编码:
import sys  
reload(sys)  
sys.setdefaultencoding('utf-8')

参考URL:https://www.cnblogs.com/bonelee/p/7613671.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-14 10:04:19 | 显示全部楼层    本楼为最佳答案   
你的python是什么版本?

检查py编码的代码:
sys.getdefaultencoding()  

试下以下代码修改py的默认编码:
import sys  
reload(sys)  
sys.setdefaultencoding('utf-8')

参考URL:https://www.cnblogs.com/bonelee/p/7613671.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-14 10:13:49 | 显示全部楼层
geen 发表于 2019-8-14 10:04
你的python是什么版本?

检查py编码的代码:

我的是python3.7,搜到的方法都不行,最后发现是正则表达式返回的不是我像要的,改了就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 05:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表