【scrapy】1.scrapy爬虫入门

一、scrapy爬虫框架

Scrapy 框架是一个基于Twisted的一个异步处理爬虫框架,应用范围非常的广泛,常用于数据采集、网络监测,以及自动化测试等。

scrapy框架包括5个主要的组件:

Scheduler:事件调度器,它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
Downloader:下载器,接收Scrapy Engine(引擎)发送的所有Requests请求,从网上下载数据,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理
Spiders:爬虫,发起爬虫请求,并解析DOWNLOADER返回的网页内容,同时和数据持久化进行交互,需要开发者编写
Item Pipeline:实体管道,它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方,需要开发者编写
Engine:Scrapy引擎,负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

图来源: Scrapy爬虫框架,入门案例(非常详细)_scrapy爬虫案例python-CSDN博客

 从上可知,我们只要实现SPIDERS(要爬什么网站,怎么解析)和ITEM PIPELINES(如何处理解析后的内容)就可以了。其他的都是有框架帮你完成了。

二、XPath基础

通过XPath来解析网页,提取内容

1 HTML节点和属性

2 解析语法

(1)a / b:‘/’在 xpath里表示层级关系,左边的 a是父节点,右边的 b是子节点

(2)a // b:表示a下所有b,直接或者间接的

(3)[@]:选择具有某个属性的节点

例如://div[@classs], //a[@x]:选择具有 class属性的 div节点、选择具有 x属性的 a节点

          //div[@class="container"]:选择具有 class属性的值为 container的 div节点

(4)//a[contains(@id, "abc")]:选择 id属性里有 abc的 a标签

示例代码;

response.xpath('//div[@class="taglist"]/ul//li//a//img/@data-original').get_all()
# 获取所有class属性(css)为taglist的div, 下一个层ul下的所有li下所有a下所有img标签下data-original属性

# data-original这里放的是图片的url地址

更多详见XML数据定位神器:详解XPath语法大全以及使用方法 - 知乎

三、安装部署

pip install scrapy

四、配置文件settings.py 介绍

(1)BOT_NAME:项目名

(2)USER_AGENT:默认是注释的,这个东西非常重要,如果不写很容易被判断为电脑,简单写一个Mozilla/5.0即可

(3)ROBOTSTXT_OBEY:是否遵循机器人协议,默认是true,运行爬虫的时候仍然没有内容查询,则需要考虑需要改为false或注释掉,君子协议 一般情况下我们不遵守

(4)CONCURRENT_REQUESTS:最大并发数,即同时允许开启多少个爬虫线程

(5)DOWNLOAD_DELAY:下载延迟时间,单位是秒,控制爬虫爬取的频率,根据项目调整,默认是3秒,即爬一个停3秒,设置为1秒性价比较高,如果要爬取的文件较多,写零点几秒也行

(6)COOKIES_ENABLED:是否保存COOKIES,默认关闭,开启可以记录爬取过程中的COKIE,非常好用的一个参数

(7)DEFAULT_REQUEST_HEADERS:默认请求头,上面写了一个USER_AGENT,其实这个东西就是放在请求头里面的,可以根据你爬取的内容做相应设置。

(8)ITEM_PIPELINES:项目管道,300为优先级,越低越爬取的优先度越高 

例如:pipelines.py里面写了两个管道,一个爬取网页的管道,一个存数据库的管道,通过调整优先级,使爬虫优先执行存库操作。

参考自:Scrapy爬虫框架,入门案例(非常详细)_scrapy爬虫案例python-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习引领教育革命:智能教育的新时代

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀目录 📒1. 引言📙2. 机器学习在教育中的应用🌞个性化学习🌙评估与反馈的智能化⭐教学资源的优…

Lua: 轻量级多用途脚本语言

Lua 是一种高效而轻量级的脚本语言,具备强大的扩展性和灵活性,广泛应用于游戏开发、嵌入式系统、Web 应用等多个领域。本文将深入探讨 Lua 的特性、应用场景以及如何使用 Lua 进行开发。 1. Lua 的起源与发展 Lua 的发展始于上世纪90年代初,…

Java单体架构项目_云霄外卖-特殊点

项目介绍: 定位: 专门为餐饮企业(餐厅、饭店)定制的一款软件商品 分为: 管理端:外卖商家使用 用户端(微信小程序):点餐用户使用。 功能架构: &#xff08…

哎呀呀 又迟到了,还被抓住了,面面相觑 害怕

网络编程 我应该迟点来,唠嗑到35嘿嘿 心疼自己早起呜呜呜,幸运的是35开讲 计算机网络 分4层 应用层(Application Layer): 应用层是用户接口和网络应用程序的接口。它允许用户访问网络服务,并支持各种应用程…

Windows系统下文件夹权限详解

文章目录 问题描述文件夹属性 问题描述 今天在Win10系统下,实现文件夹设置权限,具体的方案的涉及到我们公司内部的一款加密软件,不太方便透漏,借此机会,我也重新的回顾下windows系统下的文件夹权限 文件夹属性 打开…

[C++][设计模式][中介者模式]详细讲解

目录 1.动机2.模式定义3.要点总结 1.动机 在软件构建过程中,经常会出现多个对象相互关联的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化在这种情况下,可以…

【小沐学AI】Python实现语音识别(whisper+HuggingFace)

文章目录 1、简介1.1 whisper 2、HuggingFace2.1 安装transformers2.2 Pipeline 简介2.3 Tasks 简介2.3.1 sentiment-analysis2.3.2 zero-shot-classification2.3.3 text-generation2.3.4 fill-mask2.3.5 ner2.3.6 question-answering2.3.7 summarization2.3.8 translation 3、…

PyTorch Tensor进阶操作指南(二):深度学习中的关键技巧

本文主要讲tensor的裁剪、索引、降维和增维 Tensor与numpy互转、Tensor运算等,请看这篇文章 目录 9.1、首先看torch.squeeze()函数: 示例9.1:(基本的使用) 小技巧1:如何看维数 示例9.2:&a…

ISO15765-2 道路车辆——通过控制器局域网(CAN)进行诊断通信 (翻译版)(万字长文)

ISO15765-2 道路车辆——通过控制器局域网(CAN)进行诊断通信 (翻译版)(万字长文) 文章目录 ISO15765-2 道路车辆——通过控制器局域网(CAN)进行诊断通信 (翻译版)(万字长文)第二部分:传输协议和网络层服务前言Foreword…

在navicat对mysql声明无符号字段

1.无符号设置 在 MySQL 中,我们可以使用 UNSIGNED 属性来设置列的无符号属性,这意味着该列只能存储非负整数值。对于一些需要存储正整数的列,比如年龄、数量等,使用 UNSIGNED 属性可以提高数据存储和查询的效率,并且能…

浅谈一下VScode如何配置C环境

1.这几天突然发现在VScode写C程序比在DevC效果更好,因为在VScode中写代码有代码补全功能。所以我突然对在VScode中配置C环境变量产生了兴趣。 2.不过在VScode中配置C环境要是按照官方的来配置有点麻烦。 3.我这里有一个直接配置VScode中C环境变量的应用。 前提是…

原来“山水博客“的分类也是可以拖动排序的

这二天一直用“山水博客”写文章,发现一个问题,好象它的分类不能调整位置,这可是个大bug。首先,界面上没发现拖动相关按钮;如果按住分类拖动,会成这样: 后来仔细看了它的文档,发现它…

智能社区服务小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,房屋信息管理,住户信息管理,家政服务管理,家政预约管理,报修信息管理 微信端账号功能包括:系统首页,房屋信…

水果品牌网站开展如何拓宽渠道

对大多数人来说,零售买水果只在乎是买什么水果、哪个产地、价格等因此,对品牌的依赖度相对较低。但对于水果品牌公司来说,货好仅是基本,还需要将品牌发展出去、能获取准属性客户和转化路径。 与零售不同,批发生意或是…

在vs上远程连接Linux写服务器项目并启动后,可以看到服务启动了,但是通过浏览器访问该服务提示找不到页面

应该是被防火墙挡住了,查看这个如何检查linux服务器被防火墙挡住 • Worktile社区 和这个关于Linux下Nginx服务启动,通过浏览器无法访问的问题_linux无法访问nginx-CSDN博客 的提示之后,知道防火墙开了,想着可能是我写的服务器的…

大数据面试题之Spark(1)

目录 Spark的任务执行流程 Spark的运行流程 Spark的作业运行流程是怎么样的? Spark的特点 Spark源码中的任务调度 Spark作业调度 Spark的架构 Spark的使用场景 Spark on standalone模型、YARN架构模型(画架构图) Spark的yarn-cluster涉及的参数有哪些? Spark提交jo…

c++类成员指针用法

1)C入门级小知识,分享给将要学习或者正在学习C开发的同学。 2)内容属于原创,若转载,请说明出处。 3)提供相关问题有偿答疑和支持。 c中新增类成员指针操作,为了访问方便,他是指…

Spring Boot项目如何配置跨域

1、通过SpringSecurity进行配置 2、前端跨域配置:proxy配置项用于设置代理规则,用于前端开发中与后端API交互时使用。

《HelloGitHub》第 99 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、…

JS乌龟吃鸡游戏

代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>乌龟游戏</title><script type"text/javascript">function move(obj){//乌龟图片高度var wuGui_height 67;…