Scrapy框架自学

news2024/11/19 5:48:29

配置国内镜像源

# pip设置配置
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set trusted-host pypi.tuna.tsinghua.edu.cn

创建虚拟环境

# 使用conda创建虚拟环境(具体内容请参考课件)
conda create -n py_spider python=3.9

删除虚拟环境

# 使用conda删除虚拟环境
conda remove --name py_spider --all

列出所有虚拟环境

conda info -e
  1. 包的导出

    • 使用 pip list
    • 或者 pip freeze
  2. 导入

    • 使用 pip install -r ./requirements.txt

异步与同步的理解

在网络框架中,同步(Synchronous)和异步(Asynchronous)是指处理任务和响应的两种不同方式。

同步

  • 阻塞式操作:任务一个接着一个执行,一个任务执行完成之前,会阻塞程序的执行,直到这个任务完全完成或者返回结果。
  • 按顺序执行:任务按照它们被调用的顺序执行,一个任务的执行会等待另一个任务的结束。
  • 易于理解:同步方式的代码流程简单,易于理解和编写。

异步

  • 非阻塞式操作:任务执行时不会等待结果返回,而是继续执行下一个任务,不会阻塞程序的运行。
  • 并发执行:多个任务可以并发执行,不需要等待其他任务的完成。
  • 回调机制:异步编程常常使用回调函数或者事件处理机制,当一个任务完成时会触发相应的回调函数来处理结果。

区别

  1. 执行方式:同步是顺序执行,任务一个接着一个执行;异步是并发执行,任务不会等待其他任务完成。
  2. 阻塞行为:同步编程会阻塞程序执行,直到任务完成;异步编程不会阻塞程序执行,允许其他任务继续执行。
  3. 代码复杂度:异步编程可能会引入回调、事件处理等机制,使得代码复杂度增加,但在高并发场景下,异步能够提高系统的性能和响应速度。

在网络框架中,异步编程常用于需要处理大量并发请求的场景,比如Web服务器处理大量同时到达的HTTP请求时,异步方式能够更高效地利用系统资源,提高系统的吞吐量和响应速度。

自我理解:异步不一定是并发,但并发一定是异步。

问题:为什么并发是非堵塞。

在这里插入图片描述

同步:发送一个请求,等待返回,然后再发送下一个请求。异步:发送一个请求,不等待返回,随时可以再发送下一个请求。

同步爬虫流程

在这里插入图片描述

  1. 创建网站列表,发送request请求,得到响应内容。
  2. 对内容进行数据清洗。
  3. 数据提取。
  4. 存入数据表。

优化后的流程

在这里插入图片描述

线程爬虫,如果都放在同一列表中,会有竞争。拿请求的代码是加锁,解锁。利用队列,线程安全。只多了数据队列部分。内容提取可能导致两个项目录入同一个库表中。如果存入队列,则读取时,直接pop。提取新的url后,重新放到url队列。

Scrapy流程

在这里插入图片描述

多了爬虫引擎负责调度任务。

模块作用

  • 调度器:本质是队列,用来存放引擎的request请求。
  • 下载器:返回响应给引擎发来的request请求。

(只需手写Spider、pipline管道)

Scrapy的应用

  1. 创建Scrapy项目:
scrapy startproject mySpider
  1. 生成一个爬虫:
scrapy genspider douban movie.douban.com
  1. 查看Scrapy版本:
pip show scrapy

项目结构说明:

  • init.py:模块文件。
  • items.py:movie_nameupdate_time。
  • settings.py:设置headers、cookie、线程数、rebot。

列表分为单向列表和双向列表,它可以当做队列使用。

Hope this helps! 如果有其他需要,欢迎告诉我。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1385958.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于ssm的社区流浪动物救助领养系统的设计与开发+vue论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,流浪动物信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足…

D1302 高性能、低功耗并附带RAM的涓流充电实时时钟电路芯片

D1302是一块高性能、低功耗并附带RAM的涓流充电实时时钟电路。 主要特点: ● 实时时钟可提供秒、 分、小时、星期、日期、月 份和年等计时数据,到2100 年止。一个月小于31天时可自动调整,且具有闰年补偿功能 ● 31X8 位通用暂存RAM ● 采用…

下一代 Vue3 Devtools 正式开源

什么是 Vue DevTools Vue DevTools 是一个旨在增强 Vue 开发人员体验的工具,它提供了一些功能来帮助开发者更好地了解 Vue 应用程序。 Vue DevTools:Unleash Vue Developer Experience. Enhance your Vue development journey with an amazing experience! 典型的功能特征包…

艾瑞报告:HR数字化需关注体系化能力,红海云等标杆厂商引领一体化趋势

新全球化时代背景下,企业经营所面临的国内外环境的不确定性增强,如何从不确定性中找到确定性成了大多数企业的关注要点。近日,艾瑞咨询发布《2023中国人力资源数字化研究报告》,从数字化转型的角度切入,探讨数字化如何…

山海鲸:助力企业实现内外数据整合与价值挖掘

作为山海鲸的开发者,我们深知数字化转型对于企业发展的重要性。在不断钻研如何提升山海鲸可视化这款免费产品的实用性同时,也在不断推出各行实用解决方案,本文将介绍山海鲸企业数字化转型发展解决方案,探讨如何通过数据驱动创新&a…

移动端开发进阶之蓝牙通讯(一)

移动端开发进阶之蓝牙通讯(一) 移动端进阶之蓝牙通讯需要综合考虑蓝牙版本选择、协议栈使用、服务匹配、设备连接、安全性和硬件支持等方面。 一、蓝牙版本选择 根据实际需求和应用场景选择合适的蓝牙版本; 1.0,1M/s。 2.0EDR…

目标识别跟踪模块Tofu3

Tofu系列提供了适应不同目标、不同速率的识别跟踪模块产品系列,主要包括Tofu3,4,5,S和其他零配件,可以适配BT.656,Cameralink,网络等不同接口和协议的热红外、可见光视频。 Tofu3 是多波段视频物体识别跟踪…

idea安装go

1.根据系统平台,下载安装Go: 知乎 - 安全中心 2.windows系统,下载安装MinGW(gcc): 知乎 - 安全中心 3.安装后cmd输入一下 go env 4.代理设置 go env -w GOPROXYhttps://goproxy.cn,direct 5.idea插件安装 file->setti…

龙蜥操作系统上安装MySQL:步骤详解与常见问题解决

目录 博客前言 一.下载MySQL 1.官网下载 2.上传文件到龙蜥操作系统中 ​编辑二.安装MySQL 1.检查操作系统中的默认数据库并移除 2.创建文件夹解压 3.开始安装 4.启动服务 ​编辑 5.登录修改密码,进行授权 三.第三方工具连接(naviact&#xff…

微软Office 2019 批量授权版

软件介绍 微软办公软件套件Microsoft Office 2019 专业增强版2024年1月批量许可版更新推送!Office2019正式版2018年10月份推出,主要为多人跨平台办公与团队协作打造。Office2019整合对过去三年在Office365里所有功能,包括对Word、Excel、Pow…

外部晶振、复位按键、唤醒按键、扩展排针原理图详解

前言:本文对外部晶振、复位按键、唤醒按键、扩展排针原理图详解。本文使用的MCU是GD32F103C8T6 目录 外部晶振原理图 复位按键、唤醒按键原理图 扩展排针部分原理图 ​外部晶振原理图 如下图,两个外部晶振,分别是8M(主晶振&a…

RK3568驱动指南|驱动基础进阶篇-进阶4 内核是如何运行ko文件的_insmod

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

ruoyi后台管理系统部署-2-安装mysql

centos7 mysql 安装 1. 手动安装 安装 首先查看系统是否安装了: rpm -qa|grep mariadb rpm -qa | grep mysql systemctl status mysqld find / -name mysql.cnf卸载自带的 mariadb: rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps去官网下载 mysql 安装包&…

Chapter 9 运算符重载

目的:运用运算符重载 🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓&…

OpenHarmony4.0适配LVDS屏幕驱动

1.概述 手头有一块RK3568的开发板OK3568-C,但是还没有适配OpenHarmony,用的还是LVDS屏幕,但是官方和网上好像还没有OpenHarmony4.0的LVDS屏幕驱动的通用实现,所以决定尝试了一下适配该开发板,完成LVDS屏幕驱动的适配&…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑风电出力不确定性的电网无功-电压控制鲁棒分区方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 这个标题涉及到考虑风电出力不确定性的电网无功-电压控制鲁棒分区方法。让我们逐步解读这个标题的主要关键词和概念: 考虑风电出力不确定性…

Ubuntu server搭建dhcp服务器

安装 直接使用一下命令进行安装 apt-get install isc-dhcp-server 以下就是安装好的图片 然后进入dhcp目录 cd /etc/dhcp 进入后用ls查看当前目录存在哪些文件 使用如下进入dhcp.conf vim dhcpd.conf 红:设置ip域和子网掩码 绿:设置ip池范围 黄…

Linux下的HTTP代理服务器Squid的配置和使用

Squid是一个流行的Linux下的HTTP代理服务器软件。通过Squid,你可以在Linux服务器上设置一个代理服务器,以便为客户端提供安全的网络连接和数据传输。以下是Squid的配置和使用指南。 1. 安装Squid 首先,你需要确保你的Linux系统上已经安装了…

机器学习算法 - 马尔可夫链

马尔可夫链(Markov Chain)可以说是机器学习和人工智能的基石,在强化学习、自然语言处理、金融领域、天气预测、语音识别方面都有着极其广泛的应用 > The future is independent of the past given the present 未来独立于过去&#xff…

arcgis javascript api4.x加载天地图wgs84(wkid:4326)坐标系

需求: 使用arcgis javascript api4.x以basetilelayer方式加载天地图wgs84(wkid:4326)坐标系 效果: 代码: 提示:(下述三个文件放同一个文件夹下) 4326.js define([ex…