Python-玩转数据-Scrapy框架介绍及安装

2023-11-01

一、Scrapy框架说明

1、Scrapy介绍

Scrapy框架官方网址:http://doc.scrapy.org/en/latest

Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。

用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。

Scrapy 使用了 Twisted异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。、

2、Scrapy架构图(绿线为数据流通方向)

在这里插入图片描述

3、各个模块的简单介绍

在这里插入图片描述

二、scrapy框架的安装

1、scrapy 直接安装

先安装各种依赖包,前提已经安装python3.7,进入windows cmd

1.安装wheel包,pip install wheel(在官网下载wheel文件)

2.安装Twisted,进入网址:
https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
滑下去找T开头的,找到对应版本号的twisted,我的python是3.7的就是下面这个,37是版本号,64是window64位
不知道自己版本号的输入python --version查看

然后在命令窗口输入你下载的路径加文件名,pip install D:\pycharm\twisted\Twisted-20.3.0-cp37-cp37m-win_amd64.whl

3.安装lxml包,pip install lxml

4.安装Pyopensssl,pip install pyopenssl(在官网下载wheel文件)

5.下载好之后正式下载scrapy,pip install scrapy

6.验证是否下载成功,scrapy -h

2、anaconda scrapy 安装

CMD进入命令行,直接输入conda install scrapy,然后就等着点“y”

三、创建一个scrapy项目

打开命令窗口,创建爬虫项目文件夹

输入:scrapy startproject tutorial 即可创建一个tutorial文件夹

文件夹目录如下:

|-tutorial

|-scrapy.cfg

|-init.py

|-items.py

|-middlewares.py

|-pipelines.py

|-settings.py

|-spiders

|-init.py

文件的功能:

scrapy.cfg:配置文件

spiders:存放你Spider文件,也就是你爬取的py文件

items.py:相当于一个容器,和字典较像

middlewares.py:定义Downloader Middlewares(下载器中间件)和Spider Middlewares(蜘蛛中间件)的实现

pipelines.py:定义Item Pipeline的实现,实现数据的清洗,储存,验证。

settings.py:全局配置

创建一个spider(自己定义的爬虫文件)

命令窗口

scrapy genspider 爬虫名 爬取范围域名

例如scrapy genspider zhihu zhihu.com

完善爬虫

start_url地址对应的响应交给parse函数处理,parse函数名不能修改

提取数据,response.xpath结果是包含selector对象的列表

extract 把列表中的selector对象转化为字符串, 如果没有则为空列表

extract_first()获取列表中第一个数据转化为字符串,没有就是none值

yield 把数据传递给管道

管道的注意点

管道的使用需要在settings中开启

键是管道的位置

管道距离引擎的远近,越小越近,数据越先经过

log的使用

在settings中设置log的级别,添加一行(大写):LOG_LEVEL=“WARNING”,默认终端显示的是debug级别的log信息

log的最低级别。可选的级别有: CRITICAL、 ERROR、WARNING、INFO、DEBUG 。

LOG_FILE 是日志保存的位置,设置之后终端不会有日志输出

LOG_FILE=’./a.log’ # 设置日志保存的位置,设置后,后端不会显示日志内容

普通项目中使用log

import logging
logging.basicConfig() # 设置日志输出的样式 格式

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python-玩转数据-Scrapy框架介绍及安装 的相关文章

  • Python PAM 模块的安全问题?

    我有兴趣编写一个 PAM 模块 该模块将利用流行的 Unix 登录身份验证机制 我过去的大部分编程经验都是使用 Python 进行的 并且我正在交互的系统已经有一个 Python API 我用谷歌搜索发现pam python http pa
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 从 Python 中的类元信息对 __init__ 函数进行类型提示

    我想做的是复制什么SQLAlchemy确实 以其DeclarativeMeta班级 有了这段代码 from sqlalchemy import Column Integer String from sqlalchemy ext declar
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f

随机推荐

  • 在Stm32CubeIDE环境下使用DAP-Link仿真

    目录 一 文章背景 二 准备工作 三 调试过程 四 编写脚本自动执行OpenOCD服务 前言 本文所述方法可能已在新版本的CubeIDE中失效 原因是ST官方在新版本时作了进一步的检测和屏蔽 读者参考本文后在新版本的CubeIDE中若无法使
  • [JAVA实时屏幕监控]JAVA通过注册表获取Internet代理设置

    JAVA通过注册表获取Internet代理设置 描述 这里利用JNI方式 涉及到本地动态链接库ICE JNIRegistry dll和注册表操作类库registry jar 首先Registry openSubkey 打开指定的注册表项 然
  • dlp防泄密系统卸载_蓝盟IT外包聊聊:数据防泄密

    数字信息化的普遍应用使得企业信息泄露事件频发 根据调查显示 当今数据泄露事件中 90 的数据泄露是由于内部人员有意 无意的数据外泄行为所引发的 这种数据的泄露一旦发生对企业的打击可以说是致命的 数据防泄密已经成为企业信息安全非常重要的一部分
  • SpringBoot项目使用Sigar获取系统参数:CPU,内存,硬盘,网络流量波动

    先下载sigar http sigar hyperic com 将sigar bin lib目录下文件放到classpath中 1 pom
  • 淘宝框架atlas基本使用说明

    转自 http blog csdn net wdd1324 article details 76855408 官网 文档 github 视频资料 如有错误请指正 简介 Atlas是伴随着手机淘宝的不断发展而衍生出来的一个运行于Android
  • SOA是什么

    面向服务的体系结构 service oriented architecture SOA 是一个组件模型 它将应用程序的不同功能单元 称为服务 通过这些服务之间定义良好的接口和契约联系起来 接口是采用中立的方式进行定义的 它应该独立于实现服务
  • Java使用Hibernate-Validator验证API接口参数

    一 相关依赖
  • 逻辑地址 虚拟地址 物理地址 总线地址的区别

    1 逻辑地址 逻辑地址是最为模糊的概念 understanding the Linux kernel 上的解释是与虚拟地址相关 基于硬件MMU与软件内存管理的一个概念 具体可以看UTLK的第二章内存寻址 有很详细的解释 但是工作中之前用到的
  • 【2021-CVPR-3D人体姿态估计】Graph Stacked Hourglass Networks for 3D Human Pose Estimation

    Graph Stacked Hourglass Networks for 3D Human Pose Estimation 题目 用于3D人体姿态的图堆叠沙漏网络 作者 来源 CVPR 2021 研究内容 单人 单视图 有监督 创新点 提出
  • 目标检测数据集

    参考 You Only Look Once Unified Real Time Object Detection 你只看一次 统一的实时对象检测 CVPR 2016 1 PASCAL VOC PASCAL VOC 数据集是目标检测领域最常用
  • 推荐图灵出版社的图书

    最近半年买了不少图灵出版社的图书 有java oracle Linux和TCP IP方面的书 每本都读了差不多一半 读后有一种很亲切的感觉 总结下来一句话 很适合受中国传统教育的大部分学生 在此并无讽刺之意 很多学生习惯了 填鸭式 的教育模
  • 使用conda创建Python的虚拟环境

    目录 一 查看已有环境 二 创建虚拟环境 2 1 添加镜像地址 2 2 创建虚拟环境 2 3 激活虚拟环境 2 4 退出虚拟环境 三 pycharm使用环境 四 删除虚拟环境 五 快速创建虚拟环境 一 查看已有环境 键入以下命令 conda
  • nosql

    公共基础 一 NoSQL概述 1 NoSQL NoSQL定义 非关系型 分布式 开放源码和具有横向扩展能力的下一代数据库 NOSQL Not Only SQL 2 数据库的分类 1 TRDB数据库 传统关系型数据库 基于单机集中管理数据理念
  • 机器学习实战——第三章(分类):决策树算法与实例(一)

    前言 今天看了会 机器学习实战 第三章 决策树 很迷 似懂非懂 专业术语太多了 而且有点混乱 对于一个大一概率论没学好的学渣来说 如今大三的我看到那些概率公式和一些概率论专业术语就头疼 马上就打了退堂鼓 早起看了半个小时没看明白果断又躺回了
  • 设置swiper轮播图的css样式无效?

    项目场景 在做vue项目的时候 使用到了vue awesome swiper三方库 当时小编想重写 覆盖轮播图的分页器小圆点的css样式 其次 小编做项目时 使用的css预编译器是SCSS 问题描述 当小编在重写分页器小圆点css样式时 发
  • Vim配置及使用总结

    Vim配置及使用总结 我的Vim配置 Vim安装及配置文件 Vim安装 Vim配置文件 我的Vim配置 Vim配置详解 Vim使用技巧 基本使用介绍 命令模式 输入模式 底线命令模式 技巧总结 二进制文件查看 下面是我在使用vim时的一些配
  • Sass -- 条件语句、循环语句、自定义函数

    文章目录 条件语句 循环语句 for while each 自定义函数 条件语句 在Sass中可以使用 if if else if else 来进行条件判断 用法和JS相同 循环语句 在Sass中可以使用 for while each 来进
  • 4. Hadoop伪分布式运行模式

    文章目录 Hadoop伪分布式运行模式 1 启动HDFS并运行MapReduce程序 1 1 配置集群 配置hadoop env sh 配置core site xml 配置hdfs site xml 1 2 启动集群 格式化NameNode
  • window.open()的所有参数列表(转)

    前言 经常上网的朋友可能会到过这样一些网站 一进入首页立刻会弹出一个窗口 或者按一个连接或按钮弹出 通常在这个窗口里会显示一些注意事项 版权信息 警告 欢迎光顾之类的话或者作者想要特别提示的信息 其实制作这样的页面效果非常的容易 只要往该页
  • Python-玩转数据-Scrapy框架介绍及安装

    一 Scrapy框架说明 1 Scrapy介绍 Scrapy框架官方网址 http doc scrapy org en latest Scrapy是用纯Python实现一个为了爬取网站数据 提取结构性数据而编写的应用框架 用途非常广泛 用户