爬虫/scrapy基础

如果文章对你有帮助,欢迎关注、点赞、收藏一键三连支持以下哦!
想要一起交流学习的小伙伴可以加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 projectUsage:
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 directoryUse "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.rhkb.cn/news/164401.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里巴巴店铺所有商品数据接口及店铺商品数据分析

获取阿里巴巴店铺所有商品数据的接口是阿里巴巴开放平台提供的接口&#xff0c;通过该接口可以获取店铺所有商品数据。 通过阿里巴巴开放平台接口获取店铺所有商品数据的方法如下&#xff1a; 在开放平台注册成为开发者并创建一个应用&#xff0c;获取到所需的 App Key 和 Ap…

C语言实现用递归方法求 () = ∑ (^2)

完整代码&#xff1a; // 用递归方法求 ??(??) ∑ (??^2) #include<stdio.h>int func(int n){if (n1){return 1;}else{return n*nfunc(n-1);} }int main() {int n;printf("请输入一个整数");scanf("%d",&n);printf("%d",func(…

微信好友消息自动回复,让你轻松应对好友咨询

有许多用微信做业务、做微商的小伙伴&#xff0c;微信有时候消息太多看不过来&#xff0c;漏看消息&#xff0c;或者不知道怎么引导用户&#xff0c;让他们看到你想让他们看到的消息。微信上用户多微信上的信息容易漏掉&#xff0c;怎么能有时效的回复客户呢&#xff1f;此时你…

学习pytorch14 损失函数与反向传播

神经网络-损失函数与反向传播 官网损失函数L1Loss MAE 平均MSELoss 平方差CROSSENTROPYLOSS 交叉熵损失注意code 反向传播在debug中的显示code B站小土堆pytorch视频学习 官网 https://pytorch.org/docs/stable/nn.html#loss-functions 损失函数 L1Loss MAE 平均 import to…

食品软水树脂和工业软水树脂有什么区别?高盐水除钙镁应选择什么树脂?

在食品、饮料、制药、汽车制造、化工、电子、制革、钢铁、纺织等许多行业中&#xff0c;水的质量对产品的质量有非常重要的影响。 软化水可以有效改善水质&#xff0c;减少水中钙、镁离子含量&#xff0c;避免水垢形成&#xff0c;从而减少加热和冷却设备的能源消耗&#xff0c…

元梦之星内测上线,如何在B站打响声量?

元梦之星是腾讯天美工作室群研发的超开星乐园派对手游&#xff0c;于2023年1月17日通过审批。该游戏风格可爱软萌&#xff0c;带有社交属性&#xff0c;又是一款开黑聚会的手游&#xff0c;备受年轻人关注。 飞瓜数据&#xff08;B站版&#xff09;显示&#xff0c;元梦之星在…

Python制作PDF转Word工具(Tkinter+pdf2docx)

一、效果样式 二、核心点 1. 使用pdf2docx完成PDF转换Word 安装pdf2docx可能会报错&#xff0c;安装完成引入from pdf2docx import Converter运行也可能报错&#xff0c;可以根据报错提示看缺少那些库&#xff0c;先卸载pip uninstall xxx,使用pip install python-docx -i htt…

Smartbi携手某证券公司成功打造数据文化体系

以数据为抓手搭建数据体系&#xff0c;需要从业务运营的角度出发&#xff0c;借助工具方法&#xff0c;结构化、系统性地解决业务运营场景中的各种问题&#xff0c;不断优化和提升业务运营效率。数据体系、运营体系、工具方法和组织文化四位一体&#xff0c;自成体系&#xff0…

RabbitMQ的LazyQueue

在默认情况下&#xff0c;RabbitMQ会将接收到的信息保存在内存中以降低消息收发的延迟。但在某些特殊情况下&#xff0c;这会导致消息积压&#xff0c;比如&#xff1a; 消费者宕机或出现网络故障消息发送量激增&#xff0c;超过了消费者处理速度消费者处理业务发生阻塞 一旦…

python实现TCPclient

python实现TCPclient是一件简单的事情&#xff0c;只要通过socket这个模块就可以实现。 一、实现步骤 1、导入模块&#xff1a; 首先&#xff0c;你需要导入Python的socket模块。 import socket2、创建Socket对象&#xff1a; 使用socket.socket()函数创建一个新的socket对…

35 机器学习(三):混淆矩阵|朴素贝叶斯|决策树|随机森林

文章目录 分类模型的评估混淆矩阵精确率和召回率 接口介绍其他的补充 朴素贝叶斯基础原理介绍拉普拉斯平滑下面给出应用的例子朴素贝叶斯的思辨 决策树基础使用基本原理信息熵信息增益信息增益率Gini指数 剪枝api介绍 随机森林------集成学习初识基本使用api介绍 分类模型的评估…

【EI会议征稿】第三届应用力学与先进材料国际学术会议(ICAMAM 2024)

第三届应用力学与先进材料国际学术会议&#xff08;ICAMAM 2024&#xff09; 2024 3rd International Conference on Applied Mechanics and Advanced Materials&#xff08;ICAMAM 2024&#xff09; 第三届应用力学与先进材料国际学术会议&#xff08;ICAMAM 2024&#xff09…

如何写代码实现VRP问题中车辆容量限制及时间窗要求(python)

问题研究背景 使用遗传模拟退火算法求解如下10个卸货点的VRPTW问题。为了使研究的问题更加有意义&#xff0c;本人将时间限理解为服务点一天的具体可以允许配送的时间。 如果不要求车辆从配送中心出发的时间是统一的并且为0时刻&#xff0c;那么就默认第一个配送节点是一定能赶…

将用友U8的数据可视化需要哪些工具?

将金蝶U8的数据可视化需要一个奥威BI数据可视化工具&#xff0c;以及一套专为用友U8打造的标准化BI数据分析方案。 奥威BI SaaS平台&#xff1a;一键链接用友U8&#xff0c;立得报表 别的BI软件围绕用友U8的数据做可视化&#xff1a;1、准备配置环境&#xff1b;2、下载安装配…

JMeter做http接口功能测试

1. 普通的以key-value传参的get请求 e.g. 获取用户信息 添加http请求&#xff1b;填写服务器域名或IP&#xff1b;方法选GET&#xff1b;填写路径&#xff1b;添加参数&#xff1b;运行并查看结果。 2. 以Json串传参的post请求 e.g. 获取用户余额 添加http请求&#xff1b;…

UITesting 界面测试

1. 创建界面测试视图 UITestingBootcampView.swift import SwiftUI/// 界面测试 ViewModel class UITestingBootcampViewModel: ObservableObject{let placeholderText: String "Add name here..."Published var textFiledText: String ""Published var…

『吴秋霖赠书活动 | 第三期』《Python asyncio并发编程》

文章目录 1. 写在前面2. 浅谈asyncio3. Python asyncio并发编程 不再受限于&#xff01;asyncio异步让你的程序在高并发时翱翔自如&#xff01; 声明&#xff1a;赠书活动是博主与出版社达成合作&#xff0c;只属于粉丝的专属福利 本期书籍&#xff1a;《Python asyncio并发编程…

数字货币和区块链:跨境电商的未来之革命

随着全球数字化浪潮的不断涌现&#xff0c;跨境电商正经历着前所未有的革命。其中&#xff0c;数字货币和区块链技术被认为是这场革命的关键驱动力。 它们不仅改变了支付方式&#xff0c;还提供了更安全、高效的交易体验&#xff0c;同时也为跨境电商开启了新的商业模式和机会…

38 WEB漏洞-反序列化之PHPJAVA全解(下)

目录 Java中的API实现序列化和反序列化演示案例WebGoat_Javaweb靶场反序列化测试2020-网鼎杯-朱雀组-Web-think java真题复现 文章参考&#xff1a; https://www.cnblogs.com/zhengna/p/15737517.html https://blog.csdn.net/MCTSOG/article/details/123819548 ysoserial生成攻…

可以更改字体颜色的便签备忘录工具选择用哪个

日常添加笔记记录是一个非常好的习惯&#xff0c;通过笔记来记录一些重要的内容一方面可以帮助大家回顾过去的相关记录&#xff0c;另一方面如果记录的笔记是有关学习类的&#xff0c;还有助于大家随时查看记录的笔记。 多数时候记录笔记内容大家通常会选择一些比较方便易操作…