爬虫案例:图片下载器(代码片段)

loaderman loaderman     2023-05-04     295

关键词:

items.py

class CoserItem(scrapy.Item):
    url = scrapy.Field()
    name = scrapy.Field()
    info = scrapy.Field()
    image_urls = scrapy.Field()
    images = scrapy.Field()

 

spiders/coser.py

# -*- coding: utf-8 -*-
from scrapy.selector import Selector
import scrapy
from scrapy.contrib.loader import ItemLoader
from Cosplay.items import CoserItem


class CoserSpider(scrapy.Spider):
    name = "coser"
    allowed_domains = ["bcy.net"]
    start_urls = (
        http://bcy.net/cn125101,
        http://bcy.net/cn126487,
        http://bcy.net/cn126173
    )

    def parse(self, response):
        sel = Selector(response)

        for link in sel.xpath("//ul[@class=‘js-articles l-works‘]/li[@class=‘l-work--big‘]/article[@class=‘work work--second-created‘]/h2[@class=‘work__title‘]/a/@href").extract():
            link = http://bcy.net%s % link
            request = scrapy.Request(link, callback=self.parse_item)
            yield request

    def parse_item(self, response):
        l = ItemLoader(item=CoserItem(), response=response)
        l.add_xpath(name, "//h1[@class=‘js-post-title‘]/text()")
        l.add_xpath(info, "//div[@class=‘post__info‘]/div[@class=‘post__type post__info-group‘]/span/text()")
        urls = l.get_xpath(//img[@class="detail_std detail_clickable"]/@src)
        urls = [url.replace(/w650, ‘‘) for url in urls]
        l.add_value(image_urls, urls)
        l.add_value(url, response.url)

        return l.load_item()

 

pipelines.py

import requests
from Cosplay import settings
import os


class ImageDownloadPipeline(object):
    def process_item(self, item, spider):
        if image_urls in item:
            images = []
            dir_path = %s/%s % (settings.IMAGES_STORE, spider.name)

            if not os.path.exists(dir_path):
                os.makedirs(dir_path)
            for image_url in item[image_urls]:
                us = image_url.split(/)[3:]
                image_file_name = _.join(us)
                file_path = %s/%s % (dir_path, image_file_name)
                images.append(file_path)
                if os.path.exists(file_path):
                    continue

                with open(file_path, wb) as handle:
                    response = requests.get(image_url, stream=True)
                    for block in response.iter_content(1024):
                        if not block:
                            break

                        handle.write(block)

            item[images] = images
        return item

 

settings.py

ITEM_PIPELINES = Cosplay.pipelines.ImageDownloadPipeline: 1

IMAGES_STORE = ../Images

DOWNLOAD_DELAY = 0.25    # 250 ms of delay

 

在项目根目录下新建main.py文件,用于调试

from scrapy import cmdline
cmdline.execute(scrapy crawl coser.split())

 

执行程序

py2 main.py

 

python爬虫之scrapy框架,基本介绍使用以及用框架下载图片案例(代码片段)

...I所返回的数据(例如AmazonAssociatesWebServices)或者通用的网络爬虫。二、Scrapy架构1、架构图官方架构图翻译架构图2、组件Scrapy主要包括了以下组件:爬虫中间件(SpiderMiddleware):位于Scrapy引擎和爬虫之间的框架,主要用于... 查看详情

爬虫——综合案例流程版(代码片段)

爬虫综合案例开发步骤:导入类库创建爬虫通用类初始化init方法类中编写重试下载模块类中编写真正下载模块类外编写保存函数类外编写获取robots.txt函数类外编写抽取网址函数类中编写网址正常化函数创建下载限流类爬虫通用... 查看详情

python爬虫案例:下载酷某音乐文件(代码片段)

文章目录1、Python爬虫案例下载音乐1.1、前期准备1.2、分析1.2.1、第一步1.2.2、第二步1.2.3、第三步1.2.4、第四步1.3、代码实现1.4、运行结果1、Python爬虫案例下载音乐1.1、前期准备要有rquests、re、json包,如果不存在,先用pip... 查看详情

python爬虫案例:下载酷某音乐文件(代码片段)

文章目录1、Python爬虫案例下载音乐1.1、前期准备1.2、分析1.2.1、第一步1.2.2、第二步1.2.3、第三步1.2.4、第四步1.3、代码实现1.4、运行结果1、Python爬虫案例下载音乐1.1、前期准备要有rquests、re、json包,如果不存在,先用pip... 查看详情

8.爬虫训练场,第一个爬虫目标页设计,单页爬虫案例(代码片段)

单页爬虫配置案例相关文件第二个图片案例单页表格首页完善在初学爬虫采集时,很多人都是从一个单页采集需求开始的,单页案例也分为三种,分别如下:单篇新闻一些图片合集单页表格本篇博客就在爬虫训练... 查看详情

爬虫简介(代码片段)

爬虫的定义爬虫:按照一定的规则,自动抓取互联网信息的程序或者脚本,从而获取对于我们有价值的信息。爬虫的两大特征能够按照作者的要求下载数据或者内容能自动在网络上流窜爬虫的三大步骤下载网页提取正确的信息根... 查看详情

第一个爬虫经历----豆瓣电影top250(经典案例)(代码片段)

...为要学习数据分析,需要从网上爬取数据,所以开始学习爬虫,使用python进行爬虫,有好几种模拟发送请求的方法,最基础的是使用urllib.request模块(python自带,无需再下载),第二是requests模块(第三方库,需要pipinstallrequests),第... 查看详情

python网络爬虫小案例适合初学者入门(代码片段)

1、首先利用PyCharm工具在Terminal窗口中下载requests工具类,如果国内该工具下载不下来,可借用清华源代理进行下载,如下:pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplerequests输入命令:(vis)D:\\pythonTest\\test01> 查看详情

python爬虫之scrapy框架,基本介绍使用以及用框架下载图片案例(代码片段)

一、Scrapy框架简介Scrapy是:由Python语言开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据,只需要实现少量的代码,就能够快速的抓取。Scrapy使用了Twisted异步网络框架来... 查看详情

scrapy爬虫案例(代码片段)

一个简单的爬虫案例fromscrapy_redis.spidersimportRedisSpiderimportos,urllib.request,timeclassXiaohuaSpider(scrapy.Spider):name=‘xiaohua‘allowed_domains=[‘90xiaohua.com‘]start_urls=[‘http://90xiaohua.com//‘]file_path=r‘D:python_codespideritemitemimg‘#图片保存位置defparse... 查看详情

scrapy学习2爬虫中间件,下载器中间件之添加代理(代码片段)

中间件注意:这些中间件都放在middleware中下载中间件 作用实例: 代理被封,添加代理 方式一:内置添加代理功能importos #-*-coding:utf-8-*-importosimportscrapyfromscrapy.httpimportRequestclassChoutiSpider(scrapy.Spider):name=‘chouti 查看详情

golang-爬虫案例实践(代码片段)

目录Golang-爬虫案例实践1.爬虫步骤2.正则表达式3.并发爬取美图Golang-爬虫案例实践1.爬虫步骤明确目标(确定在哪个网址搜索)爬(爬下数据)取(去掉没用的数据)处理数据(按具体业务去使用数据)2.正则表达式文档:https://s... 查看详情

爬虫案例:尝试对知乎网验证码进行处理(代码片段)

许多流行的内容管理系统即使加了验证码模块,其众所周知的注册页面也经常会遭到网络机器人的垃圾注册。那么,这些网络机器人究,竟是怎么做的呢?既然我们已经,可以成功地识别出保存在电脑上的验证码了... 查看详情

一篇博客,拿下7个爬虫案例,够几天的学习量啦,《爬虫100例》第4篇复盘文章(代码片段)

文章目录案例13:斗图啦表情包爬取案例14:PDF电子书下载案例15:政民互动数据采集案例16:500px摄影师社区案例17:CSDN博客抓取数据案例18:煎蛋网XXOO案例19:51CTO学堂课程数据抓取今日复盘结论收藏... 查看详情

python爬虫从入门到放弃,含案例分析,超详细讲解(代码片段)

Python爬虫1、认识爬虫1.1、概述网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者)按照一定规律,自动地抓取万维网信息的程序或者脚本。1.2、应用场景爬取网页优秀的... 查看详情

urllib爬虫(流程+案例)(代码片段)

  网络爬虫是一种按照一定规则自动抓取万维网信息的程序。在如今网络发展,信息爆炸的时代,信息的处理变得尤为重要。而这之前就需要获取到数据。有关爬虫的概念可以到网上查看详细的说明,今天在这里介绍一下使用... 查看详情

爬虫——scrapy框架(代码片段)

Scrapy是一个异步处理框架,是纯Python实现的爬虫框架,其架构清晰,模块之间的耦合程度低,可拓展性强,可以灵活完成各种需求。我们只需要定制几个模块就可以轻松实现一个爬虫。1.架构 ScrapyEngine,引擎,负责整个系统... 查看详情

python面试项目案例(代码片段)

...项目整理获取整理资源1.python第三方模块下载2.scrapy框架爬虫3.python使用matplotlib模块绘制折线图相关参数4.numpy读取本地数据5.lambda函数用法6.list,sort,lambda模块区别联系7.爬虫requests模块解析8.爬虫bs4,BeautifulSoup解析9.... 查看详情