亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

大神們,幫看下在python3.6上運行出現這個錯誤幫解決下,謝謝了

import urllib.request
import re

req=urllib.request.urlopen("http://www.xianlaiwan.cn/course/list")
buf = req.read()
listurl = re.findall(r'http:.+?\.jpg',buf)

i=0
for url in listurl:
??? f=open(str(i)+'.jpg','w')
??? req=urllib.request.urlopen(url)
??? buf= req.read()
??? f.write(buf)
??? i=i+1
??? f.close()

? ? ?



錯誤:Traceback (most recent call last):
? File "C:\Users\zhuzhihao\Desktop\bb.py", line 6, in <module>
??? listurl = re.findall(r'http:.+?\.jpg',buf)
? File "E:\python\lib\re.py", line 222, in findall
??? return _compile(pattern, flags).findall(string)
TypeError: cannot use a string pattern on a bytes-like object
>>>

正在回答

3 回答

上面buf = req.read()改成

buf?=?req.read().decode('utf-8')


0 回復 有任何疑惑可以回復我~

re.findall(r'http:.+?\.jpg',buf),在python3里,這個buf是byte類型,需要str轉換下findall才可以接受

另外,創建jpg文件時,要是使用wb,然后write(buf), 不用再將buf 做 str(buf)處理

如果你open時僅使用w,寫入時就要使用str(buf), 但這樣保存的jpg無法打開

0 回復 有任何疑惑可以回復我~

re.findall()第二個參數需要字符串類型,但是req.read()的返回值不是字符串,需要str()轉換一下。應該為listurl = re.findall(r'http:.+?\.jpg',str(buf))

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

大神們,幫看下在python3.6上運行出現這個錯誤幫解決下,謝謝了

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號