鱼C论坛

 找回密码
 立即注册
查看: 1832|回复: 1

爬虫爬取出的图片下载出错,图片文件直接损坏

[复制链接]
发表于 2019-3-11 13:42:12 | 显示全部楼层 |阅读模式

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

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

x
程序执行完后,打开文件夹会发现图片全部损坏,有没有哪位知道原因的,最好有解决方法。


  1. import requests
  2. import os, sys, stat
  3. from lxml import etree
  4. import time


  5. class HuangMan():
  6.     def __init__(self):
  7.         #设置请求头
  8.         self.headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}
  9.         self.url_list = []
  10.         self.Hman_url_list = []
  11.         self.Hman_name_list = []
  12.         
  13.     def get_url_list(self):
  14.         #这里是设置爬取到第3页,想要更多的话请自行更改
  15.         url = "http://www.93qoqo.com/artlist/27-%d.html"
  16.         for i in range(2,4):
  17.             #获取第2到3页的url
  18.             self.url_list.append(url % i)
  19.             

  20.     #由于第一页网址不同,所以单独写一个获取函数
  21.     def start_1(self):
  22.         url_1 = "http://www.93qoqo.com/artlist/27.html"
  23.         response = requests.get(url_1, headers = self.headers).content.decode('utf-8')
  24.         html = etree.HTML(response)
  25.         result = html.xpath('//ul/li[@class="name"]/a')
  26.         for i in range(len(result)):
  27.             #获取result的属性
  28.             shuxing = result[i].attrib
  29.             #获取url
  30.             self.Hman_url_list.append("http://www.93qoqo.com" + shuxing.get('href'))
  31.             #获取名字
  32.             self.Hman_name_list.append(shuxing.get('title'))
  33.         print("正在爬取第1页的网站信息")
  34.         time.sleep(2)

  35.     #从第二页开始爬取信息
  36.     def start(self):
  37.         self.start_1()
  38.         self.get_url_list()
  39.         for url in self.url_list:
  40.             response = requests.get(url, headers = self.headers).content.decode('utf-8')
  41.             html = etree.HTML(response)
  42.             result = html.xpath('//ul/li[@class="name"]/a')
  43.             for i in range(len(result)):
  44.                 #获取result的属性
  45.                 shuxing = result[i].attrib
  46.                 #获取url
  47.                 self.Hman_url_list.append("http://www.93qoqo.com" + shuxing.get('href'))
  48.                 #获取名字
  49.                 self.Hman_name_list.append(result[i].text)
  50.                
  51.             print("正在爬取第%d页的网站信息" % (self.url_list.index(url) + 2))
  52.             time.sleep(2)
  53.         self.wenjian()
  54.         self.main()

  55.     def wenjian(self):
  56.         #创建文件夹
  57.         if os.path.exists("photo") == False:
  58.             os.makedirs("photo")
  59.             os.chmod("photo", stat.S_IWRITE)
  60.             os.chdir("photo")
  61.             
  62.         else:
  63.             print("文件已经存在")
  64.             
  65.     def main(self):
  66.         for url in self.Hman_url_list:
  67.             response = requests.get(url, headers = self.headers).content.decode('utf-8')
  68.             html = etree.HTML(response)
  69.             result = html.xpath('//center/div[@class="t_msgfont"]/img')
  70.             print(self.Hman_name_list[self.Hman_url_list.index(url)])
  71.             for i in range(len(self.Hman_name_list)):
  72.                 #创建次级文件夹用于存放图片
  73.                 f = os.makedirs(self.Hman_name_list[i])
  74.                 os.chmod(self.Hman_name_list[i], stat.S_IWRITE)
  75.                 print("正在创建文件夹")
  76.                 for e in range(len(result)):
  77.                     print("下载图片中。。。请稍等片刻")
  78.                     name ="%d.jpg" % e
  79.                     #请求图片
  80.                     respomse=requests.get(url,headers=self.headers)
  81.                     #下载
  82.                     with open(os.path.join(self.Hman_name_list[i],name),mode='wb') as f:
  83.                         f.write(respomse.content)
  84.                
  85.             
  86. if __name__ == "__main__":
  87.     h = HuangMan()
  88.     h.start()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-3-11 16:47:31 | 显示全部楼层
找到问题了,图片下载的url引用错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-14 12:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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