精易论坛
标题:
利用Python编写自动批量保存彼岸图网图片程序
[打印本页]
作者:
yczyczycz
时间:
2020-3-2 21:04
标题:
利用Python编写自动批量保存彼岸图网图片程序
本帖最后由 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源代码:
<font size="3">import urllib.request
from lxml import etree
plate = "4kyouxi" #选择要爬取的版块
pages = 1 #要爬取的页数
def image_download():
for x in range(0,pages):
try:
if(x==0):
url = "http://pic.netbian.com/"+plate+"/index.html" #板块图片url
urldata = urllib.request.urlopen(url).read().decode("gbk") #获取数据
treeurldata = etree.HTML(urldata) #转化成被xpath识别和匹配的对象,并赋值给treeurldata变量
urllist = treeurldata.xpath("//ul[@class='clearfix']/li/a/@href") #xpath表达式
for y in range(0,len(urllist)):
image_url = "http://pic.netbian.com"+urllist[y] #图片详情页url
image_data = urllib.request.urlopen(image_url).read().decode("gbk")
treeimage_data = etree.HTML(image_data)
title = treeimage_data.xpath("//h1/text()")
imagedownload_urldata = treeimage_data.xpath("//div[@class='photo-pic']/a/img/@src")
imagedownload_url = "http://pic.netbian.com"+str(imagedownload_urldata[0])
#print(title)
#print(imagedownload_url+"\n")
localfile = "C:\\Users\\MichstaBe\\Desktop\\image\"+"第"+str(x+1)+"页"+"第"+str(y)+"张"+".jpg" #保存地址
urllib.request.urlretrieve(imagedownload_url,filename=localfile)
print("正在爬取并保存:"+str(title[0])+"\n")
#time.sleep(0.5)
else:
url = "http://pic.netbian.com/"+plate+"/index_"+str(x+1)+".html"
urldata = urllib.request.urlopen(url).read().decode("gbk") #获取数据
treeurldata = etree.HTML(urldata) #转化成被xpath识别和匹配的对象,并赋值给treeurldata变量
urllist = treeurldata.xpath("//ul[@class='clearfix']/li/a/@href") #xpath表达式
for y in range(0,len(urllist)):
image_url = "http://pic.netbian.com"+urllist[y] #图片详情页url
image_data = urllib.request.urlopen(image_url).read().decode("gbk")
treeimage_data = etree.HTML(image_data)
title = treeimage_data.xpath("//h1/text()")
imagedownload_urldata = treeimage_data.xpath("//div[@class='photo-pic']/a/img/@src")
imagedownload_url = "http://pic.netbian.com"+str(imagedownload_urldata[0])
#print(title)
#print(imagedownload_url)
localfile = "C:\\Users\\MichstaBe\\Desktop\\image\"+"第"+str(x+1)+"页"+"第"+str(y)+"张"+".jpg" #保存地址
urllib.request.urlretrieve(imagedownload_url,filename=localfile)
print("正在爬取并保存:"+str(title[0])+"\n")
#time.sleep(0.5)
except Exception as err:
pass
image_download()
</font>
复制代码
PS:保存的图片不是4K的,通过上文分析就可了解
软件及源码仅供交流学习,请勿用于非法用途!
欢迎大家评论交流,看完也可以去我的博客看看(
https://www.yangguren.cn),
最近在学Python网络爬虫,我的博客里面有我整理的一下资料,欢迎大家访问与评论。
欢迎光临 精易论坛 (https://125.confly.eu.org/)
Powered by Discuz! X3.4