鱼C论坛

 找回密码
 立即注册
查看: 1170|回复: 13

python3.x 更改了一下下载方式【代码见14楼】,仍然差几个文件无法下载

[复制链接]
发表于 2019-4-7 08:13:03 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 wp231957 于 2019-4-8 11:13 编辑

网上搜了一下,都好麻烦啊   有没有简单的办法

# coding: utf-8
from urllib.request import urlretrieve
from bs4 import BeautifulSoup
import re,os,requests

path="e:\\reeoo.pic\\"
isExists=os.path.exists(path)
if not isExists:
  os.makedirs(path)
else:
  print (path+' 目录已存在' )
headers = {'User-Agent':'Mozilla/5.0(Wimdows NT 6.1; WOW64) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
url="http://reeoo.com"
res = requests.get(url,headers=headers,timeout=20)
content=res.text
#ls2=re.findall("https:\/\/media\.langtze\.com\/(?:[a-zA-Z]+|[\u4e00-\u9fa5]+)\.png!page",content)
ls2=re.findall("https:\/\/media\.langtze\.com\/[a-zA-Z]+\.png!page",content)
for x in ls2[:]:
  print(path+x[26:-5])
  urlretrieve(x,path+x[26:-5])
  
上面的代码下载没有问题,但是含有中文的文件就中断了 返回很多错误
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-4-7 09:29:44 | 显示全部楼层
  1. # coding: utf-8
  2. from urllib.request import urlretrieve
  3. from bs4 import BeautifulSoup
  4. import re,os,requests

  5. path="e:\\reeoo.pic\"
  6. isExists=os.path.exists(path)
  7. if not isExists:
  8.   os.makedirs(path)
  9. else:
  10.   print (path+' 目录已存在' )
  11. headers = {'User-Agent':'Mozilla/5.0(Wimdows NT 6.1; WOW64) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
  12. url="http://reeoo.com"
  13. res = requests.get(url,headers=headers,timeout=20)
  14. content=res.text
  15. ls2=re.findall("https:\/\/media\.langtze\.com\/[^\.]+\.png!page",content)
  16. for x in ls2[:]:
  17.   try:
  18.     print(path+x[26:-5])
  19.     urlretrieve(x,path+x[26:-5])
  20.   except:
  21.     print(path+x[26:-5]+"下载失败")
  22.   
  23.   
  24. '''
  25. E:\>python ex8.py
  26. e:\reeoo.pic\Nam Insik’s Portfolio Site.png
  27. e:\reeoo.pic\Nam Insik’s Portfolio Site.png下载失败
  28. e:\reeoo.pic\和-水都饌菓.png
  29. e:\reeoo.pic\和-水都饌菓.png下载失败
  30. e:\reeoo.pic\notabag.png
  31. e:\reeoo.pic\このラジオがヤバい.png
  32. e:\reeoo.pic\このラジオがヤバい.png下载失败
  33. e:\reeoo.pic\BAKE CHEESE TART.png
  34. e:\reeoo.pic\BAKE CHEESE TART.png下载失败
  35. e:\reeoo.pic\HAMADA TEA.png
  36. e:\reeoo.pic\HAMADA TEA.png下载失败
  37. e:\reeoo.pic\Mogney.png
  38. e:\reeoo.pic\村山人形店.png
  39. e:\reeoo.pic\村山人形店.png下载失败
  40. e:\reeoo.pic\Borraginol Town.png
  41. e:\reeoo.pic\Borraginol Town.png下载失败
  42. e:\reeoo.pic\Maxim Shkret.png
  43. e:\reeoo.pic\Maxim Shkret.png下载失败
  44. e:\reeoo.pic\Hinderer & Wolff.png
  45. e:\reeoo.pic\Hinderer & Wolff.png下载失败
  46. e:\reeoo.pic\Superrb.png
  47. e:\reeoo.pic\Vintage.png
  48. e:\reeoo.pic\Wind and Words.png
  49. e:\reeoo.pic\Wind and Words.png下载失败
  50. e:\reeoo.pic\Discover the Global World of Lexus.png
  51. e:\reeoo.pic\Discover the Global World of Lexus.png下载失败
  52. e:\reeoo.pic\BRANU.png
  53. e:\reeoo.pic\ActiveCollab.png
  54. e:\reeoo.pic\S-GROOVE.png
  55. e:\reeoo.pic\66° Nord.png
  56. e:\reeoo.pic\66° Nord.png下载失败
  57. e:\reeoo.pic\STUDIO.png
  58. e:\reeoo.pic\Bartle Bogle Hegarty.png
  59. e:\reeoo.pic\Bartle Bogle Hegarty.png下载失败
  60. e:\reeoo.pic\Unrivaled Calligraphy Yan Zhenqing and His Legacy.png
  61. e:\reeoo.pic\Unrivaled Calligraphy Yan Zhenqing and His Legacy.png下载失败
  62. e:\reeoo.pic\CHALLENGE Studio.png
  63. e:\reeoo.pic\CHALLENGE Studio.png下载失败
  64. '''
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-7 09:41:11 | 显示全部楼层

在14行和15行中间加一个res.decode='utf8'看看,能不能解决问题,可能是编码问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-7 09:42:37 | 显示全部楼层

你下载的是图片吗?如果是图片,那你要调用open()把它写成图片的文件
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-7 09:45:02 | 显示全部楼层
水柔炎 发表于 2019-4-7 09:42
你下载的是图片吗?如果是图片,那你要调用open()把它写成图片的文件

直接下载保存 urlretrieve  干嘛要写图片啊
而且open 同样存在中文名不行的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-7 09:46:19 | 显示全部楼层
wp231957 发表于 2019-4-7 09:45
直接下载保存 urlretrieve  干嘛要写图片啊
而且open 同样存在中文名不行的问题

我没有用过urlretrieve ,不知道,那你看看是不是编码问题吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-7 09:46:32 | 显示全部楼层
水柔炎 发表于 2019-4-7 09:41
在14行和15行中间加一个res.decode='utf8'看看,能不能解决问题,可能是编码问题

没用呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-7 11:03:54 | 显示全部楼层
本帖最后由 凌九霄 于 2019-4-7 11:06 编辑

360截图20190407105833446.jpg
因为中文是双字节,所以你的字符串截取有问题,试试下面的代码:
  1. for x in ls2[:]:
  2.   try:
  3.     print(path+x[26:])
  4.     urlretrieve(x,path+x[26:])
  5.   except:
  6.     print(path+x[26:]+"下载失败")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-7 11:19:57 | 显示全部楼层
凌九霄 发表于 2019-4-7 11:03
因为中文是双字节,所以你的字符串截取有问题,试试下面的代码:

比原来代码多下载了8个文件  但是 还是不行

E:\>python ex8.py
e:\reeoo.pic\ 目录已存在
e:\reeoo.pic\Nam Insik’s Portfolio Site.png!page
e:\reeoo.pic\Nam Insik’s Portfolio Site.png!page下载失败
e:\reeoo.pic\和-水都饌菓.png!page
e:\reeoo.pic\和-水都饌菓.png!page下载失败
e:\reeoo.pic\notabag.png!page
e:\reeoo.pic\このラジオがヤバい.png!page
e:\reeoo.pic\このラジオがヤバい.png!page下载失败
e:\reeoo.pic\BAKE CHEESE TART.png!page
e:\reeoo.pic\BAKE CHEESE TART.png!page下载失败
e:\reeoo.pic\HAMADA TEA.png!page
e:\reeoo.pic\HAMADA TEA.png!page下载失败
e:\reeoo.pic\Mogney.png!page
e:\reeoo.pic\村山人形店.png!page
e:\reeoo.pic\村山人形店.png!page下载失败
e:\reeoo.pic\Borraginol Town.png!page
e:\reeoo.pic\Borraginol Town.png!page下载失败
e:\reeoo.pic\Maxim Shkret.png!page
e:\reeoo.pic\Maxim Shkret.png!page下载失败
e:\reeoo.pic\Hinderer & Wolff.png!page
e:\reeoo.pic\Hinderer & Wolff.png!page下载失败
e:\reeoo.pic\Superrb.png!page
e:\reeoo.pic\Vintage.png!page
e:\reeoo.pic\Wind and Words.png!page
e:\reeoo.pic\Wind and Words.png!page下载失败
e:\reeoo.pic\Discover the Global World of Lexus.png!page
e:\reeoo.pic\Discover the Global World of Lexus.png!page下载失败
e:\reeoo.pic\BRANU.png!page
e:\reeoo.pic\ActiveCollab.png!page
e:\reeoo.pic\S-GROOVE.png!page
e:\reeoo.pic\66° Nord.png!page
e:\reeoo.pic\66° Nord.png!page下载失败
e:\reeoo.pic\STUDIO.png!page
e:\reeoo.pic\Bartle Bogle Hegarty.png!page
e:\reeoo.pic\Bartle Bogle Hegarty.png!page下载失败
e:\reeoo.pic\Unrivaled Calligraphy Yan Zhenqing and His Legacy.png!page
e:\reeoo.pic\Unrivaled Calligraphy Yan Zhenqing and His Legacy.png!page下载失败
e:\reeoo.pic\CHALLENGE Studio.png!page
e:\reeoo.pic\CHALLENGE Studio.png!page下载失败
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-7 11:28:19 | 显示全部楼层
wp231957 发表于 2019-4-7 11:19
比原来代码多下载了8个文件  但是 还是不行

E:\>python ex8.py

文件路径应该没有问题了,下载失败的原因与此无关
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-7 11:32:09 | 显示全部楼层
凌九霄 发表于 2019-4-7 11:28
文件路径应该没有问题了,下载失败的原因与此无关

不识别中文 日文啥的  不识别空格   

只是不知道咋解决
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-7 11:45:20 | 显示全部楼层
wp231957 发表于 2019-4-7 11:32
不识别中文 日文啥的  不识别空格   

只是不知道咋解决

应该是urlretrieve不识别空格之类的吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-7 15:43:12 | 显示全部楼层
path+x[26:-5]
感觉是这个切片的问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-8 11:12:38 | 显示全部楼层
  1. # coding: utf-8
  2. from urllib.request import urlretrieve
  3. from bs4 import BeautifulSoup
  4. import re,os,requests,urllib
  5. from urllib.request import urlopen


  6. path="e:\\reeoo.pic\"
  7. isExists=os.path.exists(path)
  8. if not isExists:
  9.   os.makedirs(path)
  10. else:
  11.   print (path+' 目录已存在' )
  12. headers = {'User-Agent':'Mozilla/5.0(Wimdows NT 6.1; WOW64) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
  13. url="http://reeoo.com"
  14. res = requests.get(url,headers=headers,timeout=20)
  15. content=res.text
  16. ls2=re.findall("https:\/\/media\.langtze\.com\/[^\.]+\.png!page",content)
  17. for x in ls2[:]:
  18.   filename=path+x[26:-5]
  19.   #print(x)
  20.   try:
  21.     url2=re.sub(r" ","%20",x)
  22.     response = urlopen(url2)
  23.     with open(filename, 'wb') as fp:
  24.       fp.write(response.read())
  25.   except:
  26.     print(x)  
  27.   
复制代码


还差以下几个文件无法下载:
https://media.langtze.com/Nam Insik’s Portfolio Site.png!page
https://media.langtze.com/和-水都饌菓.png!page
https://media.langtze.com/このラジオがヤバい.png!page
https://media.langtze.com/村山人形店.png!page
https://media.langtze.com/Hinderer & Wolff.png!page
https://media.langtze.com/66° Nord.png!page
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-15 02:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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