Python爬虫——Scrapy 的基本使用

news2024/11/14 21:10:05

Scrapy 框架中创建项目、查看配置信息,以及运行爬虫程序都是通过指令完成。

常用指令如下所示:

指令格式说明
startprojectscrapy startproject <项目名>创建新项目
genspiderscrapy genspider <爬虫文件名> <访问的域名>新建爬虫文件
runspiderscrapy runspider <爬虫文件>运行一个爬虫文件,不需要创建项目
crawlscrapy crawl <爬虫项目名>运行一个爬虫项目,必须要创建项目
listscrapy list列出项目中所有爬虫文件
viewscrapy view <url地址>从浏览器中打开 url 地址
shellcsrapy shell <url地址>命令行交互模式
settingsscrapy settings查看当前项目的配置信息

1、创建 Scrapy 爬虫项目

创建一个名为 scrapy_01 的 Scrapy 项目:

scrapy startproject scrapy_01
复制代码

打开命令行,选择python项目路径,创建名为 scrapy_01 的爬虫项目(项目名称不能以数字开头,也不能包含中文):

E:\Python学习代码\爬虫>scrapy startproject scrapy_01
New Scrapy project 'scrapy_01', using template directory 'e:\environment\python3.7.0\lib\site-packages\scrapy\templates\project', created in:
    E:\Python学习代码\爬虫\scrapy_01

You can start your first spider with:
    cd scrapy_01
    scrapy genspider example examle.com
复制代码

创建成功,项目文件如下:Scrapy 框架将整个爬虫项目分成了不同的模块,其中每个模块负责处理不同的工作,而且模块之间紧密联系。

对上图中项目文件的描述:

  • scrapy_01:项目文件夹
    • scrapy_01:用来装载项目python模块的目录,将会从这里引用代码
      • spiders文件夹:用来装载爬虫文件的目录,里面编写具体的爬虫程序,
      • items.py:项目的目标文件,定义了数据结构,保存爬取到的数据,继承自Scrapy.Item类·
      • middlewares.py:中间件,用来设置一些处理规则
      • pipelines.py:项目的管道文件,里面设置保存数据的方法,可以保存到本地或数据库
      • settings.py:全局配置文件
    • scrapy.cfg:项目基本配置文件

2、Scrapy—创建爬虫文件

进入在 spiders 目录,创建名为 baidu_test 的 python文件:

  • 第一个参数是 python爬虫文件的名称

  • 第二个参数是要访问的网站域名

# 域名 www.baidu.com 不用加http
scrapy genspider baidu_test www.baidu.com
复制代码

创建完成:

E:\Python学习代码\爬虫\scrapy_01\scrapy_01\spiders>scrapy genspider baidu_test www.baidu.com
Created spider 'baidu_test' using template 'basic' in module:
  scrapy_01.spiders.baidu_test
复制代码

spiders 文件夹中多了一个 baidu_test .py,说明爬虫文件创建成功,查看 baidu_test.py 文件的内容 :

import scrapy

class BaiduTestSpider(scrapy.Spider):
    name = 'baidu_test'
    allowed_domains = ['www.baidu.com']
    start_urls = ['http://www.baidu.com/']

    def parse(self, response):
        pass
复制代码

爬虫文件里有三个属性:name、allowed_domains 和 start_urls,一个方法 parse()

  • name:爬虫文件的名字,必须是唯一的,用于运行爬虫和区分不同的爬虫

  • allowed_domains:允许访问的域名,如果后续请求中的域名不是这个域名或不是这个域名的子级域名,则请求会被过滤掉。

  • start_urls,初始的url地址,爬虫在启动时访问的域名

  • parse():解析的方法,解析返回的响应、提取数据或者进一步生成要处理的请求;每个start_urls 里面的链接完成爬取后,返回的响应对象response会作为唯一的参数传递给这个方法

3、Scrapy—运行爬虫文件

修改 settings.py

在使用 Scrapy 框架运行爬虫文件前,需要修改全局配置文件settings.py。

# 1、定义User-Agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
# 2、是否遵循robots协议(君子协议),一般设置为False,不遵守
ROBOTSTXT_OBEY = False
# 3、最大并发量,默认为16
CONCURRENT_REQUESTS = 32
# 4、下载延迟时间
DOWNLOAD_DELAY = 1
复制代码

运行

baidu_test 爬虫文件:

import scrapy


class BaiduTestSpider(scrapy.Spider):
    name = 'baidu_test'
    allowed_domains = ['www.baidu.com']
    start_urls = ['http://www.baidu.com/']

    def parse(self, response):
        print("scrapy框架之执行python爬虫文件")
复制代码

执行名为 baidu_test 的爬虫文件指令:

scrapy crawl baidu_test
复制代码

执行成功:

settings.py 中常用配置项介绍

# 设置日志级别,DEBUG < INFO < WARNING < ERROR < CRITICAL
LOG_LEVEL = ' '

# 将日志信息保存日志文件中,而不在终端输出
LOG_FILE = ''

# 设置导出数据的编码格式(主要针对于json文件)
FEED_EXPORT_ENCODING = ''

# 非结构化数据的存储路径
IMAGES_STORE = '路径'

# 请求头,此处可以添加User-Agent、cookies、referer等
DEFAULT_REQUEST_HEADERS = {
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
  'USER_AGENT': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36',
}

# 项目管道,代表激活的优先级(1-1000) 越小越优先,默认是300
ITEM_PIPELINES={
  'Baidu.pipelines.BaiduPipeline':300
}
# 添加下载器中间件
DOWNLOADER_MIDDLEWARES = {}

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

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

相关文章

torchnet package (1)

torchnet torchnet用于torch的代码复用和模块化编程框架,主要包含四个类 Dataset: 以不同的方式对数据进行预处理.Engine: 训练/测试机器学习方法Meter评估方法性能Log日志. Documentation torchnet的调用 local tnt require ‘torchnet’ tnt.Dataset() torchnet提供了多…

VueJs中的reactive函数

前言一个基本类型的数据,想要变成响应式数据,那么需要通过ref函数包裹,而如果是一个对象的话,那么需要使用reactive函数reactive可将对象变成响应式将一个对象类型的数据变为响应式,如果是基本数据类型,那用refconst 代理对象 reactive(被代理对象)接收一个对象(或数组),返回一…

一个DevOps/SRE/运维的2022年碎碎语

人们常说&#xff1a;情商高的人会说话。实际上他们的意思是对人说人话&#xff0c;对鬼说鬼话&#xff0c;这样的人才有前途。很长时间里&#xff0c;我一直以为我无法理解他们为什么要推崇心口不一。后来&#xff0c;我知道了。我不是不理解。我只是不服气。这样的”不服气“…

box-shadow 高阶玩法:纯 CSS 画蒙娜丽莎和粒子星空

想必写过 CSS 的同学都用过 box-shadow&#xff0c;它可以给元素设置阴影&#xff0c;增加立体效果。 比如说这样&#xff1a; 但它能做的可不只是阴影&#xff0c;还可以用来做出很多有趣的效果&#xff1a; 比如画蒙娜丽莎&#xff1a; 画星空&#xff1a; 这些效果都是 bo…

尚医通-医院查询接口-上传科室接口(十九)

目录 &#xff08;1&#xff09;医院查询接口-功能实现 &#xff08;2&#xff09;上传科室接口-功能实现 &#xff08;1&#xff09;医院查询接口-功能实现 接口文档&#xff1a; 4.4.查询医院 医院信息 4.4.1.提交地址 http://localhost/api/hosp/hospital/show 在ApiC…

《东晋门阀政治》

《东晋门阀政治》 关于作者 田余庆&#xff0c;北京大学历史系教授&#xff0c;国务院古 籍整理出版规划小组成员&#xff0c;是魏晋南北朝 政治史专家。他在学术界拥有重要的地位&#xff0c;参加编著的《中国史纲要》曾获国家 教委特等奖。著有《秦汉魏晋史探微》 《拓跋史…

ubuntu 22.04上vim-plug插件管理器,相关插件与ROS2的安装

前言 最近&#xff0c;新配置了一版虚拟机&#xff0c;因为学校已经配置好环境的虚拟机忘了带回来&#xff0c;我还想系统的学习一下ROS&#xff0c;并将其用于机械臂的控制&#xff0c;因此用了新的方式配置了vim&#xff0c;并将树莓派raspberry buster系统配置上了ROS1的环…

Flink系列Table API和SQL之:滚动窗口、滑动窗口、累计窗口、分组聚合

Flink系列Table API和SQL之&#xff1a;窗口一、窗口(Window)二、分组窗口(Group Window)三、窗口表值函数(Windowing TVFs)1.滚动窗口(TUMBLE)2.滑动窗口(HOP)3.累计窗口(CUMULATE)四、分组聚合五、分组聚合实现代码六、分组窗口聚合代码实现七、窗口聚合&#xff1a;滚动窗口…

【SCL】博图SCL应用之音乐喷泉

使用Scl语言编写博图应用&#xff1a;音乐喷泉 文章目录 目录 一、音乐喷泉 1.控制要求 2.I/O分配 3.编写程序 4.效果和完整代码 二、装配流水线模拟控制&#xff08;练习&#xff09; 1.控制要求 2.场景 前言 承接上文&#xff0c;这里写一下上一篇的练习题 音乐喷泉应用案…

使用Typora+PicGo+SM.MS实现本地博客图片自动上传

使用TyporaPicGoSM.MS实现本地博客图片自动上传 Typora&#xff1a;一款Markdown 编辑器 PicGo: 一个用于快速上传图片并获取图片 URL 链接的工具. SM.MS: 一个图床网站&#xff0c;注册后有5G免费空间 为什么要让本地图片自动上传 对于一个随时随刻都有可能在文章中贴代码的计…

快来领取你的JavaScript正则表达式速查表

如果我们想对字符串进行相关&#xff08;增、删、改、查、检索&#xff09;操作&#xff0c;就可以用接下来的正则表达式实现 什么是正则表达式 正则表达式是用于匹配字符串中字符组合的模式正则表达式通常被用来检索、替换那些符合某个模式&#xff08;规则&#xff09;的文本…

家装中,你最后悔的事是什么?上海极家装修公司简介!

家装中&#xff0c;你最后悔的事是什么&#xff1f;上海极家装修公司简介&#xff01;接触过很多业主&#xff0c;就没有不后悔的!至于原因&#xff0c;因为总会出现各种“考虑不周”&#xff0c;有些真的是失之毫厘差之千里&#xff01; 下面上海极家装修公司简介&#xff01;…

Cadence每日一学_12 | 使用 Padstack Editor 制作贴片焊盘和通孔焊盘

最近在学习小马哥的Cadence课程&#xff0c;该系列课程为学习笔记&#xff1a;使用Cadence Allegro绘制小马哥DragonFly四轴飞行器(STM32F4主控)PCB四层板教程。 文章目录一、获取焊盘封装尺寸的途径二、Padstack Editor三、绘制贴片焊盘&#xff08;以电阻焊盘为例&#xff09…

Odoo 16 企业版手册 - 库存管理之产品类别

产品类别 您可以使用Odoo 库存模块中提供的产品类别功能对产品进行分类。为了执行各种产品操作&#xff0c;必须在Odoo中定义产品类别。Odoo将使产品更容易找到&#xff0c;因为它允许您按产品类别进行筛选。用户可以从库存模块的「配置」菜单访问「产品类别」窗口&#xff0c;…

【Python】sklearn机器学习之Birch聚类算法

文章目录基本原理sklearn调用基本原理 BIRCH&#xff0c;即Balanced Iterative Reducing and Clustering Using Hierarchies&#xff0c;利用分层的平衡迭代规约和聚类&#xff0c;特点是扫描一次数据就可以实现聚类&#xff0c; 而根据经验&#xff0c;一般这种一遍成功的算…

02 elf 的 binary 解析

前言 需求来自于 linux binary 的执行分析, 以及一些反编译工具的实现 比如 readelf, hopper disassemble 什么的 主要的目的是 更加详细了解 elf 的文件格式 为 后续的一些 理解做准备 elf 解析 elf 文件主要分为 四个部分 elfHeader, programHeaders, segments, …

2022年度盘点|聚焦运维服务,云智慧的高光时刻

回首2022&#xff0c;从IE 浏览器退役到AIGC 火遍全球&#xff0c;每一次科技的兴衰演进都打破着技术的新边界。与此同时&#xff0c;随着各行业数据规模爆发式地增长&#xff0c;云智慧作为国内全栈智能运维解决方案服务商&#xff0c;企业数字化地加速转型也为其带来了更多的…

Hibernate validator注解及Spring Boot自定义Hibernate Validator注解校验(超级详细)

一 Hibernate validator是什么 验证数据是贯穿整个应用层&#xff08;从表示层到持久层&#xff09;的常见任务。通常在每一层中都需要实现相同的验证逻辑&#xff0c;这样既耗时又容易出错。为了避免这些验证的重复&#xff0c;开发认原经常将验证逻辑直接捆绑到Model域中&…

1.9 基础综合案例|pyechart第三方包

文章目录json数据格式pyecharts模块介绍pyecharts快速入门数据处理这里使用比较经典的pyechart的第三方包。json数据格式 json是一种轻量级的数据交互形式。可以按照json指定的格式去组织和封装数据。或者这么说本质上json就是一个带有特定格式的字符串。 主要功能&#xff1…

【金猿案例展】正官庄——全渠道会员数据治理驱动商业增长

‍珍岛集团案例本项目案例由珍岛集团投递并参与“数据猿年度金猿策划活动——《2022大数据产业年度创新服务企业》榜单/奖项”评选。‍数据智能产业创新服务媒体——聚焦数智 改变商业随着商业品牌的全渠道裂变式发展&#xff0c;对DTC直营会员为中心的综合数据运营提出了新的…