scrapy学习-第一天

scrapy学习案例

文章目录

前言

Scrapy 是一个快速高级网络爬行和Web 刮擦框架,用于爬取网站并从其页面中提取结构化数据。它可以用于各种目的,从数据挖掘到监控和自动测试
详情可查看官方文档

一、scrapy创建项目

1.首先在自己所创建的目录下打开终端(在安装好scrapy前提下)

scrapy学习-第一天
输入以下命令scrapy startproject (项目名):
scrapy startproject scrapy_one_day

scrapy学习-第一天
创建成功会在当前路径下创建一个项目

它的结构如下

scrapy学习-第一天
  1. 接下来在命令行输入scrapy genspider (爬虫程序名) (爬取网页域名) :
    需要先跳到刚刚创建的项目目录中即
cd ./scrapy_one_day
scrapy genspider ivsky ivsky.com

scrapy学习-第一天
创建成功:
scrapy学习-第一天
在spider中就会生成一个爬虫程序
scrapy学习-第一天
本次学习主要修改ivsky.py实现scrapy爬取图片并保存到本地。

二、代码部分

本次对天堂图片网进行爬取

1.爬取数据

代码如下(示例):

这里修改的是ivsky.py中parse方法

        # xpath选择class属性为pli节点下的li节点
        imgs = response.xpath('//ul[@class="pli"]/li')
        # 遍历数据
        for img in imgs:
            # 查找当前节点下img节点的src属性通过extract方法提取出来也可以使用get方法
            photo = img.xpath('.//img/@src').extract()
            # 当photo不为空执行保存方法
            if photo:
                # 注意此时photo是列表形式如果不加[0]下面写的保存方法不可用
                self.save_photo(photo[0])

本次使用xpath进行选择(过程):
打开网页按F12

scrapy学习-第一天
可以右击数据位置选择复制xpath,
也可以自己写(复制可能会出现查找不到内容的情况,建议自己写)
如果对自己写的没有把握可以通过xpath-helper插件进行验证(可进网盘下载,在谷歌插件中导入解压后文件所在目录即可)。
提取码:
6chu

快捷键启动

Ctrl+Shift+x

scrapy学习-第一天

2.保存图片到本地

上述代码中,photo列表为图片链接

在同一个类中加入保存的方法(需要在前导入random和requests模块。
代码如下:

    def save_photo(self, urls):
        response = requests.get('https:'+str(urls))
        # 图片命名??.jpg
        file_path = '{0}{1}'.format(random.randint(0,10000), '.jpg')
        # 读取图片内容转化为二进制内容(图片储存方式为二进制
        # 因此使用content方法将源码转换为二进制,而不使用text方法)
        files = response.content
        # 因为是二进制所以写入使用wb
        with open(f'D:/ImageSpider/{file_path}', 'wb') as f:
            f.write(files)
            f.close()

在命令行输入scrapy crawl (爬虫程序名):

scrapy crawl ivsky

没有报错则执行成功

scrapy学习-第一天
保存后的目录

3.完整代码

import scrapy
import requests
import random

class IvskySpider(scrapy.Spider):
    name = 'ivsky'  # 爬虫程序名称
    allowed_domains = ['ivsky.com']  # 爬取域名
    # 通过观察网站每页的情况修改代码
    start_urls = [f'http://ivsky.com/tupian/meinv_t50/index_{n}.html' for n in range(1, 12)]

    def parse(self, response):

        # xpath选择class属性为pli节点下的li节点
        imgs = response.xpath('//ul[@class="pli"]/li')
        # 遍历数据
        for img in imgs:
            # 查找当前节点下img节点的src属性通过extract方法提取出来也可以使用get方法
            photo = img.xpath('.//img/@src').extract()
            # 当photo不为空执行保存方法
            if photo:
                # 注意此时photo是列表形式如果不加[0]下面写的保存方法不可用
                self.save_photo(photo[0])

    def save_photo(self, urls):
        response = requests.get('https:'+str(urls))
        # 图片命名??.jpg
        file_path = '{0}{1}'.format(random.randint(0,10000), '.jpg')
        # 读取图片内容转化为二进制内容(图片储存方式为二进制
        # 因此使用content方法将源码转换为二进制,而不使用text方法)
        files = response.content
        # 因为是二进制所以写入使用wb
        with open(f'D:/ImageSpider/{file_path}', 'wb') as f:
            f.write(files)
            f.close()

在项目中setting.py文件中修改,可改可不改,如果出现重定向等问题则修改后再试

scrapy学习-第一天

Original: https://blog.csdn.net/weixin_44737987/article/details/118973543
Author: 一二一O
Title: scrapy学习-第一天

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/792993/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Modeling Conversation Structure and Temporal Dynamics for Jointly Predicting Rumor Stance and Veracity(ACL-19)

    记录一下,论文建模对话结构和时序动态来联合预测谣言立场和真实性及其代码复现。 1 引言 之前的研究发现,公众对谣言消息的立场是识别流行的谣言的关键信号,这也能表明它们的真实性。因此…

    Python 2023年10月25日
    048
  • python read_csv 分块多线程读_pandas.read_csv——分块读取大文件

    read_csv中有个参数chunksize,通过指定一个chunksize分块大小来读取文件,返回的是一个可迭代的对象TextFileReader,IO Tools举例如下: I…

    Python 2023年8月8日
    057
  • 上线3天,下载4万,ChatGPT 中文版VSCode插件来了

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年11月3日
    033
  • Linux服务器批量10秒安装conda环境

    Linux服务器批量10秒安装conda环境 面对超多服务器都要安装同样的conda环境,并且需要同样的python三方包时,如何才能批量复制安装环境呢? 1,去miniconda…

    Python 2023年9月9日
    055
  • (跨模态)AI作画——使用stable-diffusion生成图片

    AI作画——使用stable-diffusion生成图片 0. 简介 1. 注册并登录huggingface 2. 下载模型 3. 生成 0. 简介 自从DallE问世以来,AI绘…

    Python 2023年9月28日
    050
  • 深度学习入门 Ubuntu18.04 cuda cudnn conda pytorch

    1 安装cuda和cudnn 1.1下载cuda为什么下载这个版本呢,因为pytorch需要cuda10.2 或者11.3,稳妥一点10.2大部分程序都能跑。1.2安装cuda s…

    Python 2023年9月9日
    077
  • 从零开始写博客系统——环境搭建

    环境相关内容 关于 Python的安装,环境变量等配置这里就不单独出文章了,网上有大量的文章可以参考。 我使用的 Mac电脑,使用 Windows也是同样可以的。只不过某些配置可能…

    Python 2023年8月15日
    065
  • web自动化测试入门篇01——框架介绍

    😏 作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。📡 主页地址:【Austin_zhai】🙆 目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最…

    Python 2023年8月1日
    059
  • 写完Numpy100道基础练习题后的错误总结和语法总结

    前言:由于是看视频学习的缘故,在写这100道题目道中有很多视频中没有出现的语法,然而很多语法直接拿来用都是比较简单的,少了很多的循环语句。至此写下这篇错误总结和语法总结,希望可以给…

    Python 2023年8月1日
    072
  • 一键部署工具easy-jenkins,界面友好,操作简单

    文章目录 前言 一、项目地址 二、使用步骤 * 1.项目结构 2.启动主类 EasyJenkinsApplication 3.安装 4.项目启动图 三、功能点介绍 * 1.部署列表…

    Python 2023年9月28日
    052
  • 神经网络模型复杂度分析

    前言 一,模型计算量分析 卷积层 FLOPs 计算 全连接层的 FLOPs 计算 二,模型参数量分析 卷积层参数量 BN 层参数量 全连接层参数量 三,模型内存访问代价计算 卷积层…

    Python 2023年10月29日
    036
  • Python实现给图片加水印功能

    前言 最近忙得连轴转,很久没更新博客了,代码倒是没啥写,积累了好些东西,接下来一有时间就来更新吧~ 本文记录使用Python实现给图片添加水印的功能实现过程 先看效果 把公众号的封…

    Python 2023年10月20日
    056
  • Django-rest-framework入门规范

    Django-rest-framework入门规范 文章目录 Django-rest-framework入门规范 * 一、web应用开发模式 – 1.前后端不分离 2….

    Python 2023年8月6日
    064
  • Java反应式编程(1)

    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 前面把Java函数式编程的由来和最主要的核心知识点讲完了。包括比较难懂的Lambda表达式是怎么演变而来的也全部都撸了一遍。…

    Python 2023年10月15日
    038
  • Python 入门的60个基础练习

    python 的语法逻辑完全靠缩进,建议缩进 4 个空格。 如果是顶级代码,那么必须顶格书写,哪怕只有一个空格也会有语法错误。 下面示例中,满足 if 条件要输出两行内容,这两行内…

    Python 2023年7月31日
    070
  • scrapy

    1、创建scrapy项目:终端输入 scrapy startproject 项目名称2.项目组成spiders(存储的是爬虫文件)init.py自定义的爬虫文件.py 有自己创建,…

    Python 2023年10月6日
    061
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球