关于用urllib python3 爬取图片的问题 下面是代码 和 异常。。

时间:2022-11-12 10:35:53
import urllib.request
import re

url = 'http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E7%A7%92%E9%80%9F%E4%BA%94%E5%8E%98%E7%B1%B3%E5%A3%81%E7%BA%B8&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=%E7%A7%92%E9%80%9F%E4%BA%94%E5%8E%98%E7%B1%B3%E5%A3%81%E7%BA%B8&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn=30&rn=30&gsm=1e&1511924778688='
data = urllib.request.urlopen(url).read()
html = data.decode('utf-8')


imglist = re.compile('"http:.+?\.jpg"').findall(html)
# f = open("D:/Crawler/1.html", "wb")
# f.write(data)
x = 0

for imgurl in imglist:
    imgname = 'D:/Crawler/pic/' + str(x) + '.jpg'
    x = x + 1
    print(imgname)
    imgurl = imgurl.replace('\/\/', '//')
    imgurl = imgurl.replace('\/', '/')
    print(imgurl)
    urllib.request.urlretrieve(imgurl,imgname)

以上是代码
以下是异常 
"http://img5.imgtn.bdimg.com/it/u=4182697097,1560768628&fm=27&gp=0.jpg"
Traceback (most recent call last):
  File "D:/Python WorkSpace/爬虫/CrawlerPic.py", line 23, in <module>
    urllib.request.urlretrieve(imgurl,imgname)
  File "D:\Python 3.63\lib\urllib\request.py", line 248, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "D:\Python 3.63\lib\urllib\request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "D:\Python 3.63\lib\urllib\request.py", line 526, in open
    response = self._open(req, data)
  File "D:\Python 3.63\lib\urllib\request.py", line 549, in _open
    'unknown_open', req)
  File "D:\Python 3.63\lib\urllib\request.py", line 504, in _call_chain
    result = func(*args)
  File "D:\Python 3.63\lib\urllib\request.py", line 1388, in unknown_open
    raise URLError('unknown url type: %s' % type)
urllib.error.URLError: <urlopen error unknown url type: "http>





4 个解决方案

#1


路径中包含中文,需要设置utf-8编码(encode)

#2


路径没有中文啊但是

#3


imglist = re.compile('"http:.+?\.jpg"').findall(html)

目测这个明显是多用了一层双引号,

但是其它问题也有,你再试一下吧。

#4


好了 谢谢 折磨死我了

#1


路径中包含中文,需要设置utf-8编码(encode)

#2


路径没有中文啊但是

#3


imglist = re.compile('"http:.+?\.jpg"').findall(html)

目测这个明显是多用了一层双引号,

但是其它问题也有,你再试一下吧。

#4


好了 谢谢 折磨死我了