开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 12273|回复: 0
收起左侧

[源码分享] 利用Python编写自动批量保存彼岸图网图片程序

[复制链接]
结帖率:100% (2/2)
发表于 2020-3-2 21:04:53 | 显示全部楼层 |阅读模式   山东省聊城市
本帖最后由 yczyczycz 于 2020-3-2 21:21 编辑

前几天学习Python网络爬虫,很多天已过怕忘记,今天温习一下。简单分析一下实现原理:首先分析一下网址,多访问几个板块发现,比如4K游戏的版块网址为: http://pic.netbian.com/4kyouxi/4K美女的版块网址为: http://pic.netbian.com/4kmeinv/其他的板块规律是一样的,以4K美女板块为例,这样我们就得到了第一道网址入口,利用Python的Urllib库进行访问 http://pic.netbian.com/4kmeinv/ ,得到数据,转到浏览器右键查看网页源代码,分析图片详情页的网址有什么规律;发现图片详情页的网址都在"<ul class="clearfix">"标签下,









    搜索这一串字符是唯一的,可以使用xpath表达式提取到ul标签下图片a标签href的内容,这样就可以得到一个包含一页图片详情页的网址的数组数据,利用for循环可以遍历出单个图片详情页的网址,再利用url.request.urlopen(),打开图片详情页并得到数据,接下来就可以分析提取要保存的图片地址了,要保存的图片地址在"<div class="photo-pic">"
    标签下的a标签下的img标签href的内容,




    利用xpath表达式就可以提取出要保存的图片的地址,接下来就可以进行最后一步,保存图片,可以利用urllib.request.urlretrieve(url,"保存地址")来实现图片的保存。

    下面为Python源代码:
    1. <font size="3">import urllib.request
    2. from lxml import etree



    3. plate = "4kyouxi"   #选择要爬取的版块
    4. pages = 1     #要爬取的页数


    5. def image_download():
    6.      for x in range(0,pages):
    7.           try:
    8.                if(x==0):
    9.                     url = "http://pic.netbian.com/"+plate+"/index.html"    #板块图片url
    10.                     urldata = urllib.request.urlopen(url).read().decode("gbk")  #获取数据
    11.                     treeurldata = etree.HTML(urldata)  #转化成被xpath识别和匹配的对象,并赋值给treeurldata变量
    12.                     urllist = treeurldata.xpath("//ul[@class='clearfix']/li/a/@href")     #xpath表达式
    13.                     for y in range(0,len(urllist)):
    14.                          image_url = "http://pic.netbian.com"+urllist[y]   #图片详情页url
    15.                          image_data = urllib.request.urlopen(image_url).read().decode("gbk")
    16.                          treeimage_data = etree.HTML(image_data)
    17.                          title = treeimage_data.xpath("//h1/text()")
    18.                          imagedownload_urldata = treeimage_data.xpath("//div[@class='photo-pic']/a/img/@src")
    19.                          imagedownload_url = "http://pic.netbian.com"+str(imagedownload_urldata[0])
    20.                          #print(title)
    21.                          #print(imagedownload_url+"\n")
    22.                          localfile = "C:\\Users\\MichstaBe\\Desktop\\image\"+"第"+str(x+1)+"页"+"第"+str(y)+"张"+".jpg"      #保存地址
    23.                          urllib.request.urlretrieve(imagedownload_url,filename=localfile)
    24.                          print("正在爬取并保存:"+str(title[0])+"\n")
    25.                          #time.sleep(0.5)
    26.                         
    27.                else:
    28.                     url = "http://pic.netbian.com/"+plate+"/index_"+str(x+1)+".html"
    29.                     urldata = urllib.request.urlopen(url).read().decode("gbk")  #获取数据
    30.                     treeurldata = etree.HTML(urldata)  #转化成被xpath识别和匹配的对象,并赋值给treeurldata变量
    31.                     urllist = treeurldata.xpath("//ul[@class='clearfix']/li/a/@href")     #xpath表达式
    32.                     for y in range(0,len(urllist)):
    33.                          image_url = "http://pic.netbian.com"+urllist[y]   #图片详情页url
    34.                          image_data = urllib.request.urlopen(image_url).read().decode("gbk")
    35.                          treeimage_data = etree.HTML(image_data)
    36.                          title = treeimage_data.xpath("//h1/text()")
    37.                          imagedownload_urldata = treeimage_data.xpath("//div[@class='photo-pic']/a/img/@src")
    38.                          imagedownload_url = "http://pic.netbian.com"+str(imagedownload_urldata[0])
    39.                          #print(title)
    40.                          #print(imagedownload_url)
    41.                          localfile = "C:\\Users\\MichstaBe\\Desktop\\image\"+"第"+str(x+1)+"页"+"第"+str(y)+"张"+".jpg"      #保存地址
    42.                          urllib.request.urlretrieve(imagedownload_url,filename=localfile)
    43.                          print("正在爬取并保存:"+str(title[0])+"\n")
    44.                          #time.sleep(0.5)
    45.           except Exception as err:
    46.                pass

    47. image_download()
    48. </font>
    复制代码
    PS:保存的图片不是4K的,通过上文分析就可了解
    软件及源码仅供交流学习,请勿用于非法用途!

    欢迎大家评论交流,看完也可以去我的博客看看(
    https://www.yangguren.cn),最近在学Python网络爬虫,我的博客里面有我整理的一下资料,欢迎大家访问与评论。


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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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