爬虫/scrapy基础

news2024/11/8 18:05:24

如果文章对你有帮助,欢迎关注、点赞、收藏一键三连支持以下哦!
想要一起交流学习的小伙伴可以加zkaq222(备注CSDN,不备注通不过哦)进入学习,共同学习进步

目录

0x01 安装和简介

0x02 文件作用

0x04 保存数据


0x01 安装和简介



Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架。
原理图:


简单来说,先去spiders拿url,再转到引擎,再给其他的模块传来传去。

我自己是linux安装,windows安装很麻烦

sudo apt-get install libxml2-dev libxslt-dev python-dev
pip install lxml
sudo apt-get install python-dev python-pip libxml2-dev zlib1g-dev libffi-dev libssl-dev
pip install Scrapy
apt-get install python3-scrapy


这几条都可以试试,毕竟安装这个东西很玄学。
输入scrapy后出现这个就是下载好了:

└─# scrapy
Scrapy 2.7.1 - no active project
 
Usage:
scrapy <command> [options] [args]
 
Available commands:
bench Run quick benchmark test
commands
fetch Fetch a URL using the Scrapy downloader
genspider Generate new spider using pre-defined templates
runspider Run a self-contained spider (without creating a project)
settings Get settings values
shell Interactive scraping console
startproject Create new project
version Print Scrapy version
view Open URL in browser, as seen by Scrapy
 
[ more ] More commands available when run from project directory
 
Use "scrapy <command> -h" to see more info about a command

0x02 文件作用


创建项目:

scrapy startproject <项目名字>


框架结构:

tree <项目名字>


myspider
├── __init__.py
├── items.py
├── middlewares.py
├── pipelines.py -->管道 保存数据
├── settings.py --> 设置文件 ua 启动管道
└── spiders -->自定义
└── __init__.py


先来看看scrapy.cfg
settings是详细设置
deploy部署 应用于项目部署

items.py 模版类,定义数据存储模型


middlewsres 中间件模块,一般不用编写。


pipelines 数据清洗或保存

0x03 创建爬虫
在项目目录下执行:

cd example
scrapy genspider example example.com


新的框架结构


首先继承了一个类,name是爬虫的名字,allowed_domain是允许的域名,意思是只爬取这个域名的信息,start_urs起始url是bbs.zkaq.cn。

parse方法中response是请求bbs对应的响应。
运行爬虫:

scrapy crawl zkaq --nolog


—nolog:去除日志,只得到结果。
我之前有一篇爬取所有帖子名字的文章,这里直接把当时的xpath放到parse方法里。


这里用的是response的xpath方法,返回一个列表,操作和列表一样,但是有两个别的方法:

extarct(): 返回一个带有字符串的列表
extarct_first():返回列表的第一个字符串,没有时返回none。


用上面的指令运行:


一点vim知识(我不太会linux):

i 进入编辑模式
ESC 退出模式
:wq 保存并退出


0x04 保存数据



利用管道(pipelines)对数据进行处理和保存。

  1. 定义一个管道类
  2. 重写process_item方法
  3. process_item处理完后返回给引擎 实际上是,spiders给引擎,引擎给pipeline

  1.   4.在settings.py中,把管道注释删除,这一步叫做启动管道。

管道执行顺序: 

ITEM_PIPELINES = {
'myspider.pipelines.MySpiderPipeline': 299,
'myspider.pipelines.MySpiderPipeline': 300,


}


则299先执行。
在zkaq.py中,使用yield把node_list返回给引擎


最后运行爬虫

还没看够?下篇继续
https://docs.qq.com/doc/DYlBlQ2xhaFBmamtq

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

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

相关文章

【软考-中级】系统集成项目管理工程师-合同管理历年案例

持续更新。。。。。。。。。。。。。。。 目录 2018 下 试题一(17分)系列文章 2018 下 试题一(17分) 阅读下列说明&#xff0c;回答问题 1至问题 3&#xff0c;将解答填入答题纸的对应栏内     某大型央企 A 公司计划开展云数据中心建设项目&#xff0c;并将公司主要业务应…

OpenGL —— 2.8、漫游之摄像机飞行移动(附源码,glfw+glad)

源码效果 C源码 纹理图片 需下载stb_image.h这个解码图片的库&#xff0c;该库只有一个头文件。 具体代码&#xff1a; vertexShader.glsl #version 330 corelayout(location 0) in vec3 aPos; layout(location 1) in vec2 aUV;out vec2 outUV;uniform mat4 _modelMatrix; …

智慧公厕蜕变多功能城市智慧驿站公厕的创新

随着城市发展的不断推进&#xff0c;对公共设施的便利性和智能化要求也日益提高。为满足市民对高品质、便捷、舒适的公共厕所的需求&#xff0c;智慧公厕行业的领航厂家广州中期科技有限公司&#xff0c;全新推出了一体化智慧公厕驿站。凭借着“高科技碳中和物联网创意设计新经…

widnows安装audiocraft

audiocraft介绍 AudioCraft是一个PyTorch库&#xff0c;用于音频生成的深度学习研究。我们可以上传一段音乐&#xff0c;AI会根据音乐以及提示词&#xff0c;生成一段新的音乐。下面来看看具体安装。 首先查看cuda版本 如何安装cuda&#xff0c;可以自行搜索 获取程序 可…

泛微OA E-Office V10 OfficeServer 任意文件上传漏洞复现

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 漏洞简介 泛微e-ofice是一款标准化的协同0A办公软件&#xff0c;泛微 …

书单|1024程序员狂欢节充能书单!

作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

双指针——快乐数

一, 题目要求 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 …

工程中的SOVD——从ECU到车辆

SOVD标准正在改变诊断方式&#xff0c;特别是在互联网上当多个合作方进行交互时&#xff0c;其提供了很大的优势。在开发的早期阶段&#xff0c;需要使用附加的方法来利用这个标准&#xff0c;因为该标准并不是专为ECU诊断而开发的&#xff0c;而且还需格外注意数据的处理&…

金融统计学方法:神经网络

目录 1.神经网络 2.深度神经网络 3.案例分析 1.神经网络 神经网络是模仿人脑神经元工作原理而设计的一种算法模型。在一个基本的神经网络中&#xff0c;存在多个“神经元”或称为“节点”&#xff0c;这些节点被组织成多个层次。每个节点都接收前一层的输入&#xff0c;进行…

基于Python实现的一个通用的二进制数据分析工具源码,分析任意格式的二进制数据,还能同时查看协议文档

这是一个通用的二进制数据分析工具。 它能做什么 分析任意格式的二进制数据&#xff0c;还能同时查看协议文档逐字节、逐位分析手动、自动分析对分析结果建透视图&#xff0c;发现规律&#xff0c;学习协议 怎么做到的 工具以插件化方式扩展协议的支持定义了易用的API供插件…

【vue3】踩坑日记,vite与node版本对应(mac环境)

创建vue3vitets项目时&#xff0c;报错The requested module ‘vue’ does not provide an export named ‘computed’&#xff1b; node版本问题&#xff0c; Vite 需要 Node.js 版本 14.18&#xff0c;16&#xff1b; 升级node版本步骤&#xff1a; 先查看node的版本&#…

qt配置halcon环境实现读入图像显示

首先&#xff0c;在Halcon里面写流程。 *读入图像 read_image (Image, cat) *获取图片大小 get_image_size (Image, Width, Height) *设置适应大小显示 dev_set_part (0, 0, Height-1, Width-1) *显示图像 dev_display (Image) 菜单栏的文件->导出程序备用。 QT新建工程&a…

Jmeter测试关联接口

Jmeter用于接口测试时&#xff0c;后一个接口经常需要用到前一次接口返回的结果&#xff0c;本文主要介绍jmeter通过正则表达式提取器来实现接口关联的方式&#xff0c;可供参考。 一、实例场景&#xff1a; 有如下两个接口&#xff0c;通过正则表达式提取器&#xff0c;将第一…

小白学习c++的的第一节课

初识c 目录&#xff1a;一、c关键字(c98)二、命名空间2.1 命名空间的定义2.2 命名空间的使用 三、c输入与输出四、缺省参数五、函数重载六、引用6.1引用特性6.2常引用6.3使用场景6.4传值和传引用效率比较6.5引用和指针的区别 七、内联函数7.1 概念7.2特性 八、auto关键字&…

Mock 测试详解:什么是 Mock 测试

Mock测试 什么是 Mock &#xff1f; Mock 的意思就是&#xff0c;当你很难拿到源数据时&#xff0c;你可以使用某些手段&#xff0c;去获取到跟源数据相似的假数据&#xff0c;拿着这些假数据&#xff0c;前端可以先行开发&#xff0c;而不需要等待后端给了数据后再开发。 Mo…

通过尖端技术创造价值:释放生成式 AI 的力量

塔曼纳 一、说明 近年来&#xff0c;世界见证了人工智能&#xff08;AI&#xff09;的重大进步&#xff0c;生成式AI是最具革命性的技术之一。生成式人工智能已成为一种强大的方法&#xff0c;使机器能够创建新的原创内容&#xff0c;使其成为不同行业各种应用背后的驱动力。在…

An Embarrassingly Easy but Strong Baseline for Nested Named Entity Recognition

原文链接&#xff1a; https://aclanthology.org/2023.acl-short.123.pdf ACL 2023 介绍 问题 基于span来解决嵌套ner任务的范式&#xff0c;大多都是先对span进行枚举&#xff0c;然后对每个span进行分类&#xff0c;实际就是得到一个分数矩阵&#xff0c;矩阵中每个元素表示一…

uniapp map地图实现marker聚合点,并点击marker触发事件

1.uniapp官方文档说明 2.关键代码片段 // 仅调用初始化&#xff0c;才会触发 on.("markerClusterCreate", (e) > {})this._mapContext.initMarkerCluster({enableDefaultStyle: false, // 是否使用默认样式zoomOnClick: true, // 点击聚合的点&#xff0c;是否…

高级软件工程师职业发展路径及适学人群

大数据赋能产业&#xff0c;改变人与场景的交互方式&#xff0c;随着大数据在各行各业融合应用的不断深化&#xff0c;预计2020年中国大数据市场市值将突破10000亿元。 未来发展&#xff0c;大数据应用范围越加宽广&#xff0c;包括&#xff1a;新零售、旅游、广告、电商…

【操作系统】MBR主引导目录结构以及作用

一.BIOS和MBR的交接仪式 当BIOS检测完内存、显卡&#xff0c;把硬盘等外设加载进来后&#xff0c;便开始在内存0X00~0X3FF处建立起数据结构、中断向量表&#xff0c;并且填写中断例程。完成这一系列的操作后便开始寻找硬盘&#xff08;如果硬盘不止一个的话&#xff0c;则会通过…