码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 8章:scrapy框架


    文章目录

    • scrapy框架
    • 如何学习框架?
    • 什么是scarpy?
    • scrapy的使用步骤
      • 1.先转到想创建工程的目录下:cd ...
      • 2.创建一个工程
      • 3.创建之后要转到工程目录下
      • 4.在spiders子目录中创建一个爬虫文件
      • 5.执行工程
      • setting文件中的参数
    • scrapy数据解析
    • scrapy持久化存储
      • 基于终端指令:
      • 基于管道持久化存储操作
      • 基于Spider的全站数据爬取
      • 请求传参
      • scrapy爬取图片

    scrapy框架

    如何学习框架?

    专门学习框架封装的各种功能的详细用法。

    什么是scarpy?

    是爬虫中封装好的一个明星框架,功能:高性能的持久化存储,异步的数据下载,高性能的数据解析,分布式。

    scrapy的使用步骤

    1.先转到想创建工程的目录下:cd …

    2.创建一个工程

    scrapy startproject 工程名  (XXPro:XXproject)
    
    • 1

    3.创建之后要转到工程目录下

    cd 工程名
    
    • 1

    4.在spiders子目录中创建一个爬虫文件

    这里不需要切换目录,在项目目录下即可。
    www.xxx.com是要爬取的网站。

    scrapy genspider 爬虫文件名 www.xxx.com
    
    • 1

    5.执行工程

    在pycharm中直接执行是不管用的,无效。应该再在终端中执行

    scrapy crawl 爬虫文件名				# 执行的是爬虫文件
    
    • 1

    setting文件中的参数

    创建好项目后,在项目的settings.py里更改老多的参数:

    # Obey robots.txt rules
    ROBOTSTXT_OBEY = False
    
    #显示指定类型的日志信息 而不显示其他乱七八糟的
    LOG_LEVEL = 'ERROR'
    
    # 设置用户代理 浏览器类型
    USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
    
    # 取消注释改行,意味着开启管道存储。
    # 300表示优先级,数值越小优先级越高	
    ITEM_PIPELINES = {
       "weiboPro.pipelines.WeiboproPipeline": 300,
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    scrapy数据解析

    爬取B站视频的作者和视频名称

    代码为项目下weibo.py的代码。想爬取微博但是失败了,改成爬B站

    在这里插入图片描述

    extract()可以将Selector对象中data参数存储的字符串提取出来
    
    对列表调用extract后,将列表的每一个Selector对象中的data对应的字符串提取了出来
    
    将列表转为字符串: .join方法
    title = [......]
    title = ''.join(title)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    weibo.py  爬虫文件
    
    import scrapy
    
    # 导包失败:右键项目目录 => 将目标标记为 => 源代码根目录
    
    # 爬取微博失败了,返回为空。改为爬取B站了。
    # 爬取B站的视频的名称和作者
    class WeiboSpider(scrapy.Spider):
        name = "weibo"
        # allowed_domains = ["weibo.com"]
        start_urls = ["https://www.bilibili.com/"]
        def parse(self, response):
            author = []
            title = []
            div_list = response.xpath('//*[@id="i_cecream"]/div[2]/main/div[2]/div/div[1]/div')
            print("数据长度为", len(div_list))
            for div in div_list:
                # xpath返回的是列表,但是列表元素一定是Selector类型的对象
                # extract可以将Selector对象中data参数存储的字符串提取出来
                author=(div.xpath('//div[@class="bili-video-card__info--right"]//a/span[@class="bili-video-card__info--author"]/text()').extract())
                # 对列表调用extract后,将列表的每一个Selector对象中的data对应的字符串提取了出来
                title=(div.xpath('//div[@class="bili-video-card__info--right"]/h3/a/text()').extract())
                # 将列表转为字符串: .join方法
                # title = ''.join(title)
            print(author)
            print(title)
            print(len(author), len(title))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    scrapy持久化存储

    基于终端指令:

    scrapy crawl weibo -o ./Bzhan.csv       # weibo是爬虫文件名,./Bzhan.csv是保存到本地的路径+文件名
    - 要求:只可以将parse方法的返回值存储到本地的文本文件中
    - 注意:持久化存储对应的文本文件的类型只可以为:'json', 'jsonlines', 'jl', 'csv', 'xml', 'marshal', 'pickle
    - 指令:scrapy crawl xxx -o filePath
    - 好处:简介高效便捷
    - 缺点:局限性比较强(数据只可以存储到指定后缀的文本文件中)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    基于管道持久化存储操作

    基于Spider的全站数据爬取

    请求传参

    scrapy爬取图片

  • 相关阅读:
    3D摄影机选择指南,你知道自己需要什么样的摄影机吗?
    【Linux】linux中你不得不爱的命令集(上)
    Linux的挖矿木马病毒清除(kswapd0进程)
    Mac苹果电脑分辨率修改管理 安装SwitchResX 完美解决
    Acwing第57场周赛
    聊聊分布式架构02——Http到Https
    mybatis中的多表查询
    fastTEXT入门自然语言处理NLP
    【MySQL基础】-【数据处理之增删改】
    zsh: command not found: adb问题分析
  • 原文地址:https://blog.csdn.net/qq_45895217/article/details/133241787
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号