鱼C论坛

 找回密码
 立即注册
查看: 727|回复: 6

[已解决]字符报错问题

[复制链接]
发表于 2018-8-27 21:02:49 | 显示全部楼层 |阅读模式

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

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

x
import urllib.request
import re
import sys

headers = {"User-Agent":
                   "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}
url='https://www.nuomi.com/?cid=002540'
req=urllib.request.Request(url,headers=headers)
response=urllib.request.urlopen(req)
html=response.read().decode('utf-8')
#print(html)
listurl=re.findall(r'http:.+\.jpg',html,re.S|re.M)
#print(listurl)
i=0
for url in listurl:
    f=open(str(i)+'.jpg','wb')
    req=urllib.request.urlopen(url)
    response=req.head().decode('utf-8')
    f.write(response)
    i+=1

这个程序报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position 88-92: ordinal not in range(128)
试了网上的方法 没用  编码问题 但是不知道怎么改
请会的同学指点下。谢谢了。。@凌九霄
最佳答案
2018-8-27 21:59:11
本帖最后由 凌九霄 于 2018-8-27 23:12 编辑

修改了下,拿到了图片。本来我想用listurl = re.sub(r'src="([^"]+jpg)"','http:\1', html)直接替换成最终图片地址,在regexbuddy里面测试是没问题的,但是用代码却没成功,这里我也有点迷惑
  1. import urllib.request
  2. import re

  3. headers = {"User-Agent":
  4.                "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}
  5. url = 'https://www.nuomi.com/?cid=002540'
  6. req = urllib.request.Request(url, headers=headers)
  7. response = urllib.request.urlopen(req)
  8. html = response.read().decode('utf-8')
  9. # print(html)

  10. listurl = re.findall(r'src="([^"]+jpg)"', html)

  11. i=0
  12. for url in listurl:
  13.     with open(str(i)+'.jpg','wb') as f:
  14.         req=urllib.request.urlopen('http:'+url)
  15.         response=req.read()
  16.         f.write(response)
  17.     i+=1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-27 21:06:18 | 显示全部楼层
head(). 不是read?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-27 21:08:43 | 显示全部楼层
.head()得是.read()吧
你要写图片不用decode(),因为是2进制写入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-27 21:21:25 | 显示全部楼层
感觉你的正则匹配有问题,拿不到图片地址,所以后面就更不用说了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-27 21:59:11 | 显示全部楼层    本楼为最佳答案   
本帖最后由 凌九霄 于 2018-8-27 23:12 编辑

修改了下,拿到了图片。本来我想用listurl = re.sub(r'src="([^"]+jpg)"','http:\1', html)直接替换成最终图片地址,在regexbuddy里面测试是没问题的,但是用代码却没成功,这里我也有点迷惑
  1. import urllib.request
  2. import re

  3. headers = {"User-Agent":
  4.                "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}
  5. url = 'https://www.nuomi.com/?cid=002540'
  6. req = urllib.request.Request(url, headers=headers)
  7. response = urllib.request.urlopen(req)
  8. html = response.read().decode('utf-8')
  9. # print(html)

  10. listurl = re.findall(r'src="([^"]+jpg)"', html)

  11. i=0
  12. for url in listurl:
  13.     with open(str(i)+'.jpg','wb') as f:
  14.         req=urllib.request.urlopen('http:'+url)
  15.         response=req.read()
  16.         f.write(response)
  17.     i+=1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-28 08:38:24 | 显示全部楼层
凌九霄 发表于 2018-8-27 21:59
修改了下,拿到了图片。本来我想用listurl = re.sub(r'src="([^"]+jpg)"','http:\1', html)直接替换成最终 ...

您好 我试了你的这个代码 报错:ValueError: unknown url type: '//gss0.bdstatic.com/8r1VfDn9KggZnd_b8IqT0jB-xx1xbK/static/list/img/revision/banner_21ada6c.jpg'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-28 09:48:53 | 显示全部楼层
slhlde 发表于 2018-8-28 08:38
您好 我试了你的这个代码 报错:ValueError: unknown url type: '//gss0.bdstatic.com/8r1VfDn9KggZnd_b8 ...


你是复制的我的,还是修改了你自己的?如果是修改的,  req=urllib.request.urlopen('http:'+url)  这里也是要改的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 07:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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