爬虫/scrapy基础

目录

0x01 安装和简介

0x02 文件作用

0x03 创建爬虫

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 文件作用


创建项目:

  1. scrapy startproject <项目名字>

框架结构:

  1. tree <项目名字>
  2. myspider
  3. ├── __init__.py
  4. ├── items.py
  5. ├── middlewares.py
  6. ├── pipelines.py -->管道 保存数据
  7. ├── settings.py --> 设置文件 ua 启动管道
  8. └── spiders -->自定义
  9. └── __init__.py

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

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

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

pipelines 数据清洗或保存

0x03 创建爬虫

在项目目录下执行:

 
  1. cd example
  2. scrapy genspider example example.com

新的框架结构


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

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

  1. scrapy crawl zkaq --nolog

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


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

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

用上面的指令运行:


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

  1. i 进入编辑模式
  2. ESC 退出模式
  3. :wq 保存并退出

0x04 保存数据


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

  1. 定义一个管道类
  2. 重写process_item方法
  3. process_item处理完后返回给引擎

     实际上是,spiders给引擎,引擎给pipeline

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


管道执行顺序:

  1. ITEM_PIPELINES = {
  2. 'myspider.pipelines.MySpiderPipeline': 299,
  3. 'myspider.pipelines.MySpiderPipeline': 300,
  4. }

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

最后运行爬虫

还没看够?下篇继续  

 渗透工具

技术文档、书籍

 

面试题

帮助你在面试中脱颖而出

视频

基础到进阶

环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值