鱼C论坛

 找回密码
 立即注册
查看: 1214|回复: 5

[已解决]爬图片素材失败

[复制链接]
发表于 2020-6-6 12:29:11 | 显示全部楼层 |阅读模式

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

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

x
  1. import requests
  2. from lxml import etree

  3. class ImageSpider(object):
  4.     def __init__(self):
  5.         '''准备url'''
  6.         self.first_url="https://www.51miz.com/so-sucai/1789243-13-0-0-default/p_{}/"
  7.         self.headers={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"}

  8.     '''发送请求  获取响应'''
  9.     def get_page(self,url):
  10.         res=requests.get(url=url,headers=self.headers)
  11.         html=res.content.decode('utf-8')
  12.         return html


  13.     '''解析数据'''
  14.     def parse_page(self,html):
  15.         '''创建解析对象'''
  16.         parse_html = etree.HTML(html)
  17.         '''获取二级页面链接'''
  18.         image_src_list = parse_html.xpath('//a[@class="image-box"]/@href')

  19.         for image_src in image_src_list:
  20.             print(image_src)
  21.             html1=self.get_page(image_src)
  22.             parse_html1=etree.HTML(html1)
  23.             bimg_url = parse_html1.xpath('//img[@class="previewPic previewPic_0 previewPicSmall_0 show"]/@src')[0]
  24.             filename = parse_html1.xpath('//div[@class="title fl lh28"]//h1[@class="iftip"]/text()')[0]
  25.             dirname = "图片1/" + filename[1:] + '.jpg'
  26.             html2 = requests.get(url="http:"+bimg_url, headers=self.headers).content
  27.             with open(dirname,'wb') as f:
  28.                 f.write(html2)
  29.                 print("%s下载成功"%filename)

  30.     def main(self):
  31.         startPage=int(input("起始页:"))
  32.         endPage=int(input("终止页:"))
  33.         for page in range(startPage,endPage+1):
  34.             url = self.first_url.format(page)
  35.             html = self.get_page(url)
  36.             #pprint(html)
  37.             print(url,'aaaa')
  38.             self.parse_page(html)

  39. if __name__ == '__main__':
  40.     imageSpider=ImageSpider()
  41.     imageSpider.main()
复制代码


要爬的网址是:https://www.51miz.com/
以“鼠年”图片为例,先在检索框检索“鼠年”,然后要爬的PNG类型的图片,如下图:

1591417646(1).jpg

报错信息如下:
1591417702(1).jpg
最佳答案
2020-6-6 12:48:50
jump_p 发表于 2020-6-6 12:31
那是文件夹的名字啊?我以为是在open里写的,可以自动创建

文件夹不会自动创建的
要么手动创建,要么os.mkdir
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-6 12:30:20 | 显示全部楼层
有图片1这个文件夹吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-6 12:31:42 | 显示全部楼层
qiuyouzhi 发表于 2020-6-6 12:30
有图片1这个文件夹吗?

那是文件夹的名字啊?我以为是在open里写的,可以自动创建
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-6 12:48:50 | 显示全部楼层    本楼为最佳答案   
jump_p 发表于 2020-6-6 12:31
那是文件夹的名字啊?我以为是在open里写的,可以自动创建

文件夹不会自动创建的
要么手动创建,要么os.mkdir
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-6 13:21:37 | 显示全部楼层
本帖最后由 xiaosi4081 于 2020-6-6 13:27 编辑
  1. import requests
  2. from lxml import etree
  3. import os
  4. if not os.path.exists('图片1'):
  5.     os.mkdir('图片1')
  6. class ImageSpider(object):
  7.     def __init__(self):
  8.         '''准备url'''
  9.         self.first_url="https://www.51miz.com/so-sucai/1789243-13-0-0-default/p_{}/"
  10.         self.headers={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"}

  11.     '''发送请求  获取响应'''
  12.     def get_page(self,url):
  13.         res=requests.get(url=url,headers=self.headers)
  14.         html=res.content.decode('utf-8')
  15.         return html


  16.     '''解析数据'''
  17.     def parse_page(self,html):
  18.         '''创建解析对象'''
  19.         parse_html = etree.HTML(html)
  20.         '''获取二级页面链接'''
  21.         image_src_list = parse_html.xpath('//a[@class="image-box"]/@href')

  22.         for image_src in image_src_list:
  23.             print(image_src)
  24.             html1=self.get_page(image_src)
  25.             parse_html1=etree.HTML(html1)
  26.             bimg_url = parse_html1.xpath('//img[@class="previewPic previewPic_0 previewPicSmall_0 show"]/@src')[0]
  27.             filename = parse_html1.xpath('//div[@class="title fl lh28"]//h1[@class="iftip"]/text()')[0]
  28.             dirname = "图片1/" + filename[1:] + '.jpg'
  29.             html2 = requests.get(url="http:"+bimg_url, headers=self.headers).content
  30.             with open(dirname,'wb') as f:
  31.                 f.write(html2)
  32.                 print("%s下载成功"%filename)

  33.     def main(self):
  34.         startPage=int(input("起始页:"))
  35.         endPage=int(input("终止页:"))
  36.         for page in range(startPage,endPage+1):
  37.             url = self.first_url.format(page)
  38.             html = self.get_page(url)
  39.             #pprint(html)
  40.             print(url,'aaaa')
  41.             self.parse_page(html)

  42. if __name__ == '__main__':
  43.     imageSpider=ImageSpider()
  44.     imageSpider.main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-6 13:31:48 | 显示全部楼层

感谢!不过楼上先回答了,这次先给他最佳了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-21 10:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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