鱼C论坛

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

爬虫下载下来的图片怎么变成二维码,但是链接可以用浏览器查看。用python下载就成了

[复制链接]
发表于 2019-7-31 22:18:51 | 显示全部楼层 |阅读模式

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

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

x
这是代码
  1. import urllib.request
  2. import re
  3. import os
  4. import random
  5. import time[img][/img]

  6. #url='http://www.umei.cc/meinvtupian/meinvxiezhen/198202.htm'
  7. headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
  8. ,'referer':'https://www.mm131.net/xinggan/2330_3.html','accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8'
  9. ,'authority':'www.mm131.net','path':'/xinggan/2330_4.html','accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8'}
  10. #url='http://www.umei.cc/meinvtupian/meinvxiezhen/198202_3.htm'[float=left][/float]
  11. #for i in rang(2,10)
  12. os.chdir('img')

  13. for i in range(2,4):
  14.         number=i
  15.         url='https://www.mm131.net/xinggan/2330_'+str(number)+'.html'
  16.         html=urllib.request.Request(url,None,headers)
  17.         #html.add_header('user-agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36','referer','https://www.mm131.net/xinggan/2330_3.html')
  18.         img_html=urllib.request.urlopen(html).read().decode(encoding='UTF-8',errors='ignore')
  19.         
  20.         p=r'src="(https://img1.mm131.me/pic/2330/.*\.jpg)'
  21.         img_html1=re.findall(p,img_html)
  22.         print(img_html1)
  23.         for each in img_html1:
  24.                 print(each)
  25.                 file_name=each.split('/')[-1]
  26.                 urllib.request.urlretrieve(each.replace(' ','%20'),file_name)
复制代码

下载的图片     图片添加不了     是不是被反扒机制弄了,用python下载的图片都是一张二维码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-8-1 10:03:00 | 显示全部楼层
<a href='198202_2.htm'><img alt="可爱美丽俏佳人丰满白嫩卧室小清新唯美写真" alt="" src="http://i1.whymtj.com/uploads/tu/201907/9999/da86dadc50.jpg" /></a></p>
你要拿这个里面的 src
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-1 10:04:30 | 显示全部楼层
而且图片保存 , 要用二进制写入
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-3 15:49:34 | 显示全部楼层
害怕型全嘲豪 发表于 2019-8-1 10:04
而且图片保存 , 要用二进制写入

我想在就试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-3 15:52:28 | 显示全部楼层
害怕型全嘲豪 发表于 2019-8-1 10:04
而且图片保存 , 要用二进制写入

大哥    用urllib.request.urlretrieve()这个函数怎么用二进制写入额  不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-12 17:41:09 | 显示全部楼层
caiheng2019 发表于 2019-8-3 15:52
大哥    用urllib.request.urlretrieve()这个函数怎么用二进制写入额  不懂

不推荐用urllib模块 , 推荐使用requests 模块 , requests的话 , res = requests.get()  res.connect 就是二进制内容
写入的话 可以用 with open(xxx.jpg,"wb") as f 的方式写入
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-12 21:24:10 | 显示全部楼层
这个问题就厉害了,有些网站有一个防盗链的,在headers里面用到一个 Referer,告诉服务器从哪个链接过来的,所以在代码上加上Referer就可以了。。我这边只是测试过加Referer和不加
  1. import urllib.request
  2. import re
  3. import random
  4. import time
  5. import sys
  6. import os


  7. headers={
  8.     'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
  9.     'Referer':'https://www.mm131.net/xinggan/',
  10.     }

  11. os.makedirs("./img/")
  12. os.chdir("./img")

  13. for i in range(2,10):
  14.     number=i
  15.     url='https://www.mm131.net/xinggan/5074_'+str(number)+'.html'
  16.     html=urllib.request.Request(url=url,headers=headers)
  17.     img_html=urllib.request.urlopen(html).read().decode('gbk')
  18.     #print(img_html)
  19.     p=r'src="(https://img1.mm131.me/pic/5074/.*\.jpg)'
  20.     img_html1=re.findall(p,img_html)
  21.     for each in img_html1:
  22.         print(each)
  23.         '''
  24.         file_name=each.split('/')[-1]
  25.         urllib.request.urlretrieve(each,file_name)
  26.         '''
  27.         file_name=each.split('/')[-1]
  28.         req=urllib.request.Request(url=each,headers=headers)

  29.         response=urllib.request.urlopen(req)
  30.         
  31.         img1=response.read()
  32.         with open(file_name,"wb") as f:
  33.             f.write(img1)
  34.         
复制代码

这个代码测试是对的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-17 08:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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