使用scrapy爬取某瓣妹子图片

爬取某瓣妹子图片

需要源码私我

第一次写博客,刚接触scrapy(写的不好,多多见谅)
本人还是本着技术为主(fu),妹子为辅(zhu)的目的来学习的
爬虫的路上,一定不满足于使用requests+解析器来实现,这时候scrapy出现了,选择哪种还是得根据需求来,不必拘泥固定模式。scrapy对于小型任务来讲还是不错的,省去了自己码多线程,异步的时间,需要手写的也就解析跟管道处理两块。

话不多说,今天就使用scrapy完成一个简单的爬取某瓣的大熊妹子图吧

首先要确保电脑已经安装好了scrapy
创建项目:scrapy startproject Demo
创建spider:scrapy genspider douban2`` ‘www.xxx.cn’

目录结构
在这里插入图片描述
首先我们来编写item模块
这是我们想要采集的数据字段
我这里只提取了名称跟图片

import scrapyclass Douban2Item(scrapy.Item):# define the fields for your item here like:name = scrapy.Field()image = scrapy.Field()

然后编写douban22.py 文件
这也是爬虫主要的实现逻辑
我是从第二页开始爬取的,第一页的URL有些变化

import scrapy
from douban2.items import Douban2Itemclass Douban22Spider(scrapy.Spider):name = 'douban22'base_url = 'https://www.xxx(码).com/?cid=2&page='pager_offset = 2start_urls = [base_url + str(pager_offset)]def parse(self, response):node_list = response.xpath('//*[@id="main"]/div[2]/div[2]/ul')for node in node_list:item = Douban2Item()for a in range(0,20):item['name'] = node.xpath('.//img/@title').extract()[a]item['image'] = node.xpath('.//img/@src').extract()[a]yield itemif self.pager_offset < 300:self.pager_offset += 1url = self.base_url + str(self.pager_offset)yield scrapy.Request(url, callback=self.parse)

接着我们编写pipelines.py
这是管道文件,采集到的数据通过yield信号,传到这里进行后续操作,可写入本地,也可写入数据库

class Douban2Pipeline(ImagesPipeline):def get_media_requests(self,item,info):image = item['image']yield scrapy.Request(image)def item_completed(self,results,item,info):image_path = [x['path'] for ok, x in results if ok]#os.rename(images_store+image_path[0],images_store+item['name']+'.jpg')return item

最后打开settings.py
添加图片保存路径

IMAGES_STORE ='D:/爬虫/test1/Douban2/dbpic2/'

启用管道

ITEM_PIPELINES = {'douban2.pipelines.Douban2Pipeline': 300,
}

运行 scrapy crawl douban22
好啦,到这儿某瓣的妹子图片就都到手啦


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部