17.网络爬虫—Scrapy入门与实战

这篇具有很好参考价值的文章主要介绍了17.网络爬虫—Scrapy入门与实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言
🏘️🏘️个人简介:以山河作礼。
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证
📝​📝第一篇文章《1.认识网络爬虫》获得全站热榜第一,python领域热榜第一
🧾 🧾第四篇文章《4.网络爬虫—Post请求(实战演示)》全站热榜第八
🧾 🧾第八篇文章《8.网络爬虫—正则表达式RE实战》全站热榜第十二
🧾 🧾第十篇文章《10.网络爬虫—MongoDB详讲与实战》全站热榜第八,领域热榜第二
🧾 🧾第十三篇文章《13.网络爬虫—多进程详讲(实战演示)》全站热榜第十二
🧾 🧾第十四篇文章《14.网络爬虫—selenium详讲》测试领域热榜第二十
🧾 🧾第十六篇文章《网络爬虫—字体反爬(实战演示)》全站热榜第二十五
🎁🎁《Python网络爬虫》专栏累计发表十六篇文章,上榜七篇。欢迎免费订阅!欢迎大家一起学习,一起成长!!
💕💕悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。


Scrapy基础

🧾 🧾Scrapy是一个用于爬取网站数据和提取结构化数据的Python应用程序框架。Scrapy的设计是用于Web爬虫,也可以用于提取数据和自动化测试。

Scrapy提供了一个内置的HTTP请求处理器,可以通过编写自定义的中间件来扩展其功能。Scrapy使用Twisted事件驱动框架,可以同时处理数千个并发请求。

🧾 Scrapy的主要组件包括:

  1. ScrapyEngine(引擎):负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
  2. Scheduler(调度器):它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
  3. Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到Responses交还给ScrapyEngine(引擎),由引擎交给Spider来处理。
  4. Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)。
  5. Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方。
  6. Downloader Middlewares(下载中间件):一个可以自定义扩展下载功能的组件。
  7. Spider Middlewares(Spider中间件):一个可以自定扩展和操作引擎和Spider中间通信的功能组件。

Scrapy运行流程原理

17.网络爬虫—Scrapy入门与实战

Scrapy的工作流程

1.引擎从爬虫的起始URL开始,发送请求至调度器。

2.调度器将请求放入队列中,并等待下载器处理。

3.下载器将请求发送给网站服务器,并下载网页内容。

4.下载器将下载的网页内容返回给引擎。

5.引擎将下载的网页内容发送给爬虫进行解析。

6.爬虫解析网页内容,并提取需要的数据。

7.管道将爬虫提取的数据进行处理,并保存到本地文件或数据库中。

Scrapy的优点

1.高效Scrapy使用Twisted事件驱动框架,可以同时处理数千个并发请求

2.可扩展Scrapy提供了丰富的扩展接口,可以通过编写自定义的中间件来扩展其功能

3.灵活Scrapy支持多种数据格式的爬取和处理,包括HTML、XML、JSON等

4.易于使用Scrapy提供了丰富的文档和示例,可以快速入门

Scrapy基本使用(豆瓣网为例)

🧾 安装scrapy模块:

pip install Scrapy  

17.网络爬虫—Scrapy入门与实战

创建项目

🧾 🧾选择需要创建项目的位置
🎯进入cmd命令窗口(win+r),或者pycharm中打开终端也可以
第一种方式
17.网络爬虫—Scrapy入门与实战
第二种方式:
17.网络爬虫—Scrapy入门与实战
🎯进入到需要创建文件的盘符,在命令窗口使用命令(C:/D:/E:/F:)进入对应的盘符
17.网络爬虫—Scrapy入门与实战

🎯进入需要创建的路径cd 路径

cd D:\新建文件夹\pythonProject1\测试\scrapy入门

17.网络爬虫—Scrapy入门与实战

🎯 当输入命令的前面部分出现对应的路径,代表进入成功
17.网络爬虫—Scrapy入门与实战
🎯检测scrapy是否成功,直接输入scrapy按确认
注意:如果没有成功(需要配置pip的环境变量,检测scrapy是否下载成功,是否安装到了其他的解释器中)
17.网络爬虫—Scrapy入门与实战

🎯创建项目,使用命令在命令窗口输入:

scrapy startproject douban     # douban是项目的名称

🎯确认输入的命令后,会在当前路径下创建一个项目,以下为成功案例:
17.网络爬虫—Scrapy入门与实战

New Scrapy project 'douban', using template directory 'D:\Python3.10\Lib\site-packages\scrapy\templates\project', created in:
    D:\新建文件夹\pythonProject1\测试\scrapy入门\douban

You can start your first spider with:
    cd douban
    scrapy genspider example example.com

🎯创建完成后,如果没有出现文件,进行刷新即可
17.网络爬虫—Scrapy入门与实战

创建爬虫

🧾 🧾 进入到spiders文件下创建创建爬虫文件
cd 到spiders文件下

例如:

cd douban\douban\spiders

17.网络爬虫—Scrapy入门与实战
17.网络爬虫—Scrapy入门与实战

🎯创建爬虫 命令:
[scrapy genspider 爬虫的名称 爬虫网站]

爬虫的名称不能和项目名称一样
爬虫的网站是主网站即可

🎯成功后返回如下

Created spider 'douban_data' using template 'basic' in module:
  {spiders_module.__name__}.{module}

17.网络爬虫—Scrapy入门与实战

配置爬虫

# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
# Obey robots.txt rules
ROBOTSTXT_OBEY = False

17.网络爬虫—Scrapy入门与实战
17.网络爬虫—Scrapy入门与实战

运行爬虫

🎯启动爬虫文件 scarpy crawl 爬虫名称
例如

  scrapy crawl douban_data

运行结果
17.网络爬虫—Scrapy入门与实战

如何用python执行cmd命令

🧾 🧾 终端获取的数据无法进行搜索,所以我们使用python的模块来运行cmd命令,获取相同的数据,方便我们数据的搜索和筛选。

🧾 我们创建一个start的py文件,帮助我们运行程序
方法/步骤:

  1. 打开编辑器,导入python的os模块
  2. 使用os模块中的system方法可以调用底层的cmd,其参数os.system(cmd)
  3. sublime编辑器执行快捷键Ctrl+B执行代码,此时cmd命令执行

代码如下:

# 'scrapy crawl douban_data'

import os
os.system('scrapy crawl douban_data')

运行结果(展示部分内容):
🎯红色不是报错,是日志文件,日志输出也是红色
17.网络爬虫—Scrapy入门与实战

数据解析

🧾 🧾我们需要对全部数据进行分析,拿到我们想到的数据,电影名称和电影评分:

title = re.findall('<a class="nbg" href=".*?"  title="(.*?)">', response.text)
        print(title)
        nums = re.findall('<span class="rating_nums">(.*?)</span>', response.text)
        print(nums)

打包数据

  # 打包数据  /在items中定义传输数据的结构(结构可以定义,或者不进行定义)
        item = DoubanItem()
        # 需要将一条数据存入到字典中
        for title, nums in zip(title, nums):
            item['title'] = title
            item['nums'] = nums

            yield item

17.网络爬虫—Scrapy入门与实战

打开管道

🎯解除注释,打开管道

17.网络爬虫—Scrapy入门与实战

17.网络爬虫—Scrapy入门与实战

pipeline使用注意点

1. 使用之前需要在settings中开启
2. pipeline在setting中键表示位置(即pipeline在项目中的位置可以自定义),值表示距离引擎的远近,越近数据会越先经过:权重值小的优先执行
3. 有多个pipeline的时候,process_item的方法必须return item,否则后一个pipeline取到的数据为None值
4. pipeline中process_item的方法必须有,否则item没有办法接受和处理
5. process_item方法接受item和spider,其中spider表示当前传递item过来的spider
6. open_spider(self, spider) :能够在爬虫开启的时候执行一次
7. close_spider(self, spider) :能够在爬虫关闭的时候执行一次
8. 上述俩个方法经常用于爬虫和数据库的交互,在爬虫开启的时候建立和数据库的连接,在爬虫关闭的时候断开和数据库的连接

🎯打开管道将数据写入txt文件中


class DoubanPipeline:
    def __init__(self):
        self.f = open('data.txt', 'w+', encoding='utf-8')

    def process_item(self, item, spider):
        self.f.write(f'{item}\n')
        return item

    def close_spider(self, spider):
        self.f.close()
        print('文件写入完成')

🎯运行结果:

17.网络爬虫—Scrapy入门与实战

后记

👉👉本专栏所有文章是博主学习笔记,仅供学习使用,爬虫只是一种技术,希望学习过的人能正确使用它。
博主也会定时一周三更爬虫相关技术更大家系统学习,如有问题,可以私信我,没有回,那我可能在上课或者睡觉,写作不易,感谢大家的支持!!🌹🌹🌹
文章来源地址https://www.toymoban.com/news/detail-440019.html

到了这里,关于17.网络爬虫—Scrapy入门与实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【深入Scrapy实战】从登录到数据解析构建完整爬虫流程

    【作者主页】: 吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布式爬虫平台感兴趣的朋友可以关注《分布式爬虫平台搭建

    2024年02月04日
    浏览(48)
  • Python网络爬虫入门到实战

    💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 网络爬虫(Web Scraping)是一种自动化从网页上获取信息的技术,它通过模拟浏览器

    2024年02月12日
    浏览(47)
  • 网络爬虫(Python:Selenium、Scrapy框架;爬虫与反爬虫笔记)

    Selenium是一个模拟浏览器浏览网页的工具,主要用于测试网站的自动化测试工具。 Selenium需要安装浏览器驱动,才能调用浏览器进行自动爬取或自动化测试,常见的包括Chrome、Firefox、IE、PhantomJS等浏览器。 注意:驱动下载解压后,置于Python的安装目录下;然后将Python的安装目

    2024年01月18日
    浏览(60)
  • 20.网络爬虫—Scrapy-Redis分布式爬虫

    前言 : 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️: Python领域新星创作者,CSDN实力新星认证 📝​📝第一篇文章《1.认识网络爬虫》获得 全站热榜第一,python领域热榜第一 。 🧾 🧾第四篇文章《4.网络爬虫—Post请求(实战演示)》 全站热榜第八 。 🧾 🧾第八篇文章《8

    2024年02月02日
    浏览(73)
  • Scrapy:Python中强大的网络爬虫框架

    在当今信息爆炸的时代,从互联网上获取数据已经成为许多应用程序的核心需求。Scrapy是一款基于Python的强大网络爬虫框架,它提供了一种灵活且高效的方式来提取、处理和存储互联网上的数据。本文将介绍Scrapy的主要特性和优势,以及如何使用它来构建强大的网络爬虫。

    2024年02月19日
    浏览(61)
  • 网络爬虫丨基于scrapy+mysql爬取博客信息

    本期内容 :基于scrapy+mysql爬取博客信息并保存到数据库中 实验需求 anaconda丨pycharm python3.11.4 scrapy mysql 项目下载地址:https://download.csdn.net/download/m0_68111267/88740730 本次实验实现了:使用Scrapy框架爬取博客专栏的目录信息并保存到MySQL数据库中,实验主要涉及到Python的爬虫技术以

    2024年03月18日
    浏览(54)
  • 【100天精通python】Day45:python网络爬虫开发_ Scrapy 爬虫框架

    目录 1 Scrapy 的简介 2 Scrapy选择器 3 快速创建Scrapy 爬虫 4 下载器与爬虫中间件

    2024年02月11日
    浏览(51)
  • 【头歌】——数据分析与实践-python-网络爬虫-Scrapy爬虫基础-网页数据解析-requests 爬虫-JSON基础

    第1关 爬取网页的表格信息 第2关 爬取表格中指定单元格的信息 第3关 将单元格的信息保存到列表并排序 第4关 爬取div标签的信息 第5关 爬取单页多个div标签的信息 第6关 爬取多个网页的多个div标签的信息 第1关 Scarpy安装与项目创建 第2关 Scrapy核心原理 第1关 XPath解析网页 第

    2024年01月22日
    浏览(55)
  • 推荐源哥和川川的新书:《Pyhton网络爬虫从入门到实战》

    ❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆,51CTO专家博主🏆 ❤️技术活,该赏 ❤️点赞 👍 收藏 ⭐再看,养成习惯 老规

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包