使用scrapy爬取某瓣妹子图片

爬取某瓣妹子图片

需要源码私我

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

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

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

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

import scrapy

class 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 Douban2Item

class Douban22Spider(scrapy.Spider):
    name = 'douban22'
    base_url = 'https://www.xxx(码).com/?cid=2&page='
    pager_offset = 2
    start_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 item
        if self.pager_offset < 300:
            self.pager_offset += 1
            url = 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
好啦,到这儿某瓣的妹子图片就都到手啦

使用Scrapy爬取起点中文网的图片可以通过以下步骤实现: 1. **安装Scrapy**:首先,确保你的环境中已经安装了Scrapy。如果没有安装,可以使用pip进行安装: ```bash pip install scrapy ``` 2. **创建Scrapy项目**:在你的工作目录下创建一个新的Scrapy项目: ```bash scrapy startproject qidian_images ``` 3. **创建爬虫**:进入项目目录并创建一个新的爬虫: ```bash cd qidian_images scrapy genspider qidian_spider qidian.com ``` 4. **编写爬虫代码**:打开`qidian_spider.py`文件,编写爬虫代码。以下是一个示例代码,用于爬取起点中文网的小说封面图片: ```python import scrapy from scrapy.http import Request class QidianSpiderSpider(scrapy.Spider): name = 'qidian_spider' allowed_domains = ['qidian.com'] start_urls = ['https://www.qidian.com/'] def parse(self, response): # 找到所有小说封面图片的URL image_urls = response.css('img.cover::attr(src)').getall() for image_url in image_urls: if image_url.startswith('//'): image_url = 'https:' + image_url yield Request(image_url, callback=self.save_image) def save_image(self, response): # 获取图片的URL image_url = response.url # 获取图片的二进制内容 image_content = response.body # 获取图片的文件名 image_name = image_url.split('/')[-1] # 保存图片到本地 with open(f'images/{image_name}', 'wb') as f: f.write(image_content) ``` 5. **运行爬虫**:在项目目录下运行爬虫,并指定输出目录: ```bash scrapy crawl qidian_spider -o images.json ``` 6. **保存图片**:为了将图片保存到本地,需要在`settings.py`文件中添加以下配置: ```python import os IMAGES_STORE = os.path.join(os.path.dirname(__file__), 'images') ``` 并在`settings.py`中启用图片下载中间件: ```python ITEM_PIPELINES = { 'scrapy.pipelines.images.ImagesPipeline': 1, } IMAGES_URLS_FIELD = 'image_urls' IMAGES_STORE = 'images' ``` 7. **启动爬虫**:确保你已经创建了`images`文件夹,然后启动爬虫: ```bash scrapy crawl qidian_spider ``` 通过以上步骤,你可以使用Scrapy爬取起点中文网的图片并保存到本地。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值