鱼C论坛

 找回密码
 立即注册
查看: 1684|回复: 3

[已解决]python55讲,下载妹子图问题

[复制链接]
发表于 2017-5-21 12:43:18 | 显示全部楼层 |阅读模式

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

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

x
报错信息是什么意思?需要如何改?
先谢过各位了。

代码如下:

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

  4. def url_open(url):
  5.     #隐藏:请求url并修改User-Agent
  6.     req = urllib.request.Request(url)
  7.     req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36')
  8.     #生成代理
  9.     proxies = ['61.191.41.130:80']
  10.     proxy = random.choice(proxies)
  11.     #生成ProxyHandler,创建opener,安装opener
  12.     proxy_support = urllib.request.ProxyHandler({'http':proxy})
  13.     opener = urllib.request.build_opener(proxy_support)
  14.     urllib.request.install_opener(opener)
  15.     #请求打开url
  16.     response = urllib.request.urlopen(url)
  17.     html = response.read()

  18.     return html


  19. def get_page(url):
  20.     #得到请求页面的内容并解码
  21.     html = url_open(url).decode('utf-8')

  22.     a = html.find('current-comment-page') + 23
  23.     b = html.find(']',a)
  24.     #返回page的编号
  25.     return html[a:b]


  26. def find_imgs(url):
  27.     html = url_open(url).decode('utf-8')
  28.     img_addrs = []
  29.     #找到图片的链接
  30.     a = html.find('img src=')
  31.     #无链接时为-1
  32.     while a!=-1:
  33.         b = html.find('.jpg',a,a+255)
  34.         # 当链接不是以jpg结尾时b为-1
  35.         if b!=-1:
  36.             img_addrs.append(html[a+9:b+4])
  37.         else:
  38.             b = a + 9

  39.         a = html.find('img src=',b)

  40.     return img_addrs


  41. def save_imgs(folder,img_addrs):
  42.     for each in img_addrs:
  43.         filename = each.split('/')[-1]#取得文件名字
  44.         with open(filename,'wb') as f:
  45.             img = url_open(each)
  46.             f.write(img)

  47. def download_mm(folder='OOXX',pages=10):
  48.     #创建foler并进入folder
  49.     os.mkdir(folder)
  50.     os.chdir(folder)

  51.     url = 'http://jandan.net/ooxx/'
  52.     page_num = int(get_page(url))

  53.     for i in range(pages):
  54.         page_num = i
  55.         page_url = url + 'page-' + str(page_num) + '#comments'
  56.         img_addrs = find_imgs(page_url)
  57.         save_imgs(folder,img_addrs)

  58. if __name__ == '__main__':
  59.     download_mm()
复制代码


报错如下:
C:\Users\c\AppData\Local\Programs\Python\Python35\python.exe D:/Python视频/test/test1.py
Traceback (most recent call last):
  File "D:/Python视频/test/test1.py", line 72, in <module>
    download_mm()
  File "D:/Python视频/test/test1.py", line 69, in download_mm
    save_imgs(folder, img_addrs)
  File "D:/Python视频/test/test1.py", line 54, in save_imgs
    img = url_open(each)
  File "D:/Python视频/test/test1.py", line 7, in url_open
    req = urllib.request.Request(url)
  File "C:\Users\c\AppData\Local\Programs\Python\Python35\lib\urllib\request.py", line 269, in __init__
    self.full_url = url
  File "C:\Users\c\AppData\Local\Programs\Python\Python35\lib\urllib\request.py", line 295, in full_url
    self._parse()
  File "C:\Users\c\AppData\Local\Programs\Python\Python35\lib\urllib\request.py", line 324, in _parse
    raise ValueError("unknown url type: %r" % self.full_url)
ValueError: unknown url type: '//wx4.sinaimg.cn/mw600/0063qhYBgy1ffsu4e7ig7j30go0m8403.jpg'

Process finished with exit code 1

最佳答案
2017-5-21 13:26:28

  1. img_addrs.append(html[a+9:b+4])
  2. 改成
  3. img_addrs.append('http:'+html[a+9:b+4])
  4. 地址就对了
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-21 13:10:09 | 显示全部楼层
http://
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-21 13:12:38 | 显示全部楼层
  1. import urllib.request
  2. import os
  3. import re

  4. def save_imgs(folder,img_addrs):
  5.     for each in img_addrs:
  6.         filename=each.split('/')[-1]
  7.         with open(filename,'wb') as f:
  8.             img =url_open(each)
  9.             f.write(img)
  10.         print(1)
  11.     print(2)


  12. def url_open(url):
  13.     reg= urllib.request.Request(url)
  14.     reg.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36')
  15.     response = urllib.request.urlopen(url)
  16.     html= response.read()
  17.    
  18.     return html
  19. def get_page(url):
  20.     html = url_open(url).decode('utf-8')
  21.    
  22.     #a = html.find('current-comment-page')+23
  23.     a = re.search (r'\[\d{1,4}\]',html)
  24.     a = a.group()
  25.     b=len(a)
  26.     a=a[1:b-1]
  27.     return a   
  28. def find_imgs(url):
  29.     html =url_open(url).decode('utf-8')
  30.     img_addrs= []
  31.     a = html.find('img src=')
  32.     while a != -1:
  33.         b = html.find('.jpg',a,a+255)
  34.         if b!= -1 :
  35.             if 'lanya' in html[a+9:b+4]:
  36.                 pass
  37.             else:
  38.                 img_addrs.append('http:'+html[a+9:b+4])
  39.         else:
  40.             b=a+9
  41.         a = html.find('img src=',b)
  42.     print(img_addrs)
  43.     return img_addrs



  44. def download_mm(folder='ooxx',pages=4,star=0):
  45.     os.mkdir(folder)
  46.     os.chdir(folder)
  47.    
  48.     url = 'http://jandan.net/ooxx/'  #妹子图地址
  49.     #url = 'http://jandan.net/pic/' #无聊图地址
  50.     if star!= 0 :
  51.         page_num = star
  52.     else:
  53.         page_num=int(get_page(url))
  54.     for i in  range(pages):
  55.    
  56.         page_num-=1
  57.         page_url = url + 'page-'+str(page_num)+'#comments'
  58.       
  59.         img_addrs=find_imgs(page_url)
  60.      
  61.         save_imgs(folder,img_addrs)
  62.         
  63.         print(page_url)
  64. if __name__=='__main__':
  65.     download_mm()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-21 13:26:28 | 显示全部楼层    本楼为最佳答案   

  1. img_addrs.append(html[a+9:b+4])
  2. 改成
  3. img_addrs.append('http:'+html[a+9:b+4])
  4. 地址就对了
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 17:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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