# -*- coding: utf-8 -*- import scrapy,re,os from PY_2018_03_17.items import TuKuItem from urllib import request class TukuSpider(scrapy.Spider): name = 'tuku' allowed_domains = ['lanrentuku.com'] start_urls = [] base_url='http://lanrentuku.com/vector/flower/p%s.html' for page in range(1,2): start_urls.append(base_url%page) def parse(self, response): item=TuKuItem() #检测是否可以访问网站 # paths=response.url.split('/') # with open('paths[-1]','w',encoding='utf-8') as f: # f.write(response.body.decode('gb2312')) # print('~~~~~~~~~~~~~~') dd_list=response.xpath('//div[@class="list-pic"]/dl/dd') # print(dd_list)#列表 #疑问:dd_list加上.extract()是字符串,不带.extract()是selector生成器 # print('!!!!!!!!!!!!1') # count=1 for dd in dd_list: src=dd.xpath('./a/img/@src').extract() # print(src)#列表 #拿取缩略图src # if src!=[]: # print(src[0]) # print(count) # count +=1 #正则 # pattern=re.compile(r'<img.*src="(.*?)"') # src=pattern.findall(dd) # if src!=[]: # print(src) #详情页大图-href href=dd.xpath('./a/@href').extract() if href!=[]: href=request.urljoin(response.url,href[0]) # print(href) yield scrapy.Request(url=href,callback=self.detail_page,meta={'data':item}) def detail_page(self,response): #详情页的页面 item=response.meta['data'] img=response.xpath('//div[@class="content-a"]/p/img/@src').extract() if img!=[]: img=img[0] print(img) #下载详情图片 yield scrapy.Request(url=img,callback=self.download,meta={'data':item}) def download(self,response): item = response.meta['data'] root_dir = 'tuku_img' if not os.path.exists(root_dir): os.mkdir(root_dir) paths=response.url.split('/')[-1] filename=root_dir+'/'+paths with open(filename,'wb') as f: f.write(response.body) f.close() yield item #下载完第一页后点击下一页有两种方法: #1、接口方式 #2、selenium\phantomjs
Python3~scrapy项目之下载网页图片
最新推荐文章于 2022-12-28 22:37:52 发布
本文介绍了一个Python3 Scrapy项目,用于从lanrentuku.com网站下载花卉类别的图片。首先设置起始URL,然后解析网页,通过XPath提取图片链接。接着,对于每个图片链接,发起新的请求到详情页,再次解析获取大图URL,并进行下载操作。最后,创建目录保存图片,实现了批量下载的功能。
摘要由CSDN通过智能技术生成