首页 > 其他分享 >Scrapy 入门笔记

Scrapy 入门笔记

时间:2022-09-29 11:55:54浏览次数:51  
标签:shell 入门 创建 爬虫 笔记 robots 爬取 Scrapy scrapy

scrapy框架

scrapy

scrapy是什么?

Scrapy是一个为了爬取网站数据,提取结构化数据而编写的应用框架。可以应用在包括数据挖掘、信息处理或存储历史数据等一系列的程序中。

安装scrapy

conda install scrapy

scrapy项目的创建和运行

创建scrapy项目

scrapy startproject 项目名称

注意:

  • 项目名称不能以数字开头
  • 项目名称不能含有中文

scrapy项目结构

scrapy项目结构解析

spiders文件夹存储的是爬虫文件

items文件是定义数据结构的地方,爬取的数据都有哪些

middleware 中间件 代理

pipelines 管道 用来处理下载的数据

注意:我们所写的爬虫程序都存放在spiders文件夹中

scrapy创建爬虫文件

cd 项目名称\项目名称\spiders
scrapy genspider 爬虫名称 要爬取网页的url地址(不需要添加协议头)

注意:这里不需要添加协议头是因为在创建好的爬虫文件中的start_urls会自动添加协议头

scrapy爬虫文件代码结构

注意:

  • allowed_domains限制了我们所能爬取的网站
  • start_urls表示我们要开始访问的第一个url

scrapy运行爬虫

scrapy crawl 爬虫名称

scrapy-robots协议

在scrapy创建的爬虫项目中,settings.py 存在如下设定:

注意:

  • 其中的ROBOTSTXT_OBEY = False 表示不遵守爬取网站所设置的robots协议,该配置项默认值为True
  • robots.txt是一般网站针对爬虫所设置的“君子协议”,其中规定了不同类型的爬虫所能爬取的内容以及不能爬取的内容

scrapy58同城案例

创建项目

进入爬虫文件目录并创建爬虫

编辑创建的爬虫文件

注意:

  • 如果在创建爬虫时,指定爬取的url时,添加了协议头,这里的start_urls会产生多余的协议头,需要将其去除
  • 如果请求的接口是以html结尾,最后的/可以去掉

运行tc爬虫

从上图中可以看出,我们的请求没有得到响应,被爬取网站可能设置了相关反爬措施,也有可能我们的爬虫遵守了robots.txt,先将我们编写的爬虫文件设置不遵守robots.txt协议

重新运行

scrapy shell

scrapy shell简介

scrapy shell,是一个交互终端,供您在未启动spider的情况下尝试及调试您的代码。其本意是用来测试提取数据的代码,不过您可以将其作为正常的python终端,在上面测试任何的python代码。

该终端是用来测试xpath或css表达式,查看他们的工作方式及从爬取的网页中提取的数据。在编写您的spider时,该终端提供了交互性测试您的表达式代码的功能,免去了每次修改后运行spider的麻烦。

一旦熟悉了scrapy终端后,您会发现其在开发和调试spider时发挥的巨大作用。

注意:scrapy shell是基于ipython实现的,所以需要安装ipython,具体安装命令如下:

pip install ipython

scrapy shell 基本使用

直接进入windows终端下,输入以下命令:

scrapy shell 域名

运行完上述命令后,我们会进入python终端,并且已经生成了 访问我们传入域名的response对象,可以直接对其进行一系列的操作

标签:shell,入门,创建,爬虫,笔记,robots,爬取,Scrapy,scrapy
From: https://www.cnblogs.com/ShineQ/p/16740896.html

相关文章

  • 【Kubernetes】K8s笔记(三):Kubernetes 中的核心概念 Pod
    目录0.为什么叫Pod1.Pod是Kubernetes中的核心对象2.使用YAML描述Pod3.使用kubectl操作Pod0.为什么叫PodPod这个词原意是“豌豆荚”,后来又延伸出“舱室......
  • DEV C++创建64位DLL,再用C#调用入门测试
    1. DEVC++创建64位DLL  DEVC++新建--项目--dll--选择C项目---确定  C文件中添加1#include"devdll.h"2#include<windows.h>3/*在程序中添加......
  • Dubbo快速入门教程
    简单介绍官方文档:https://dubbo.apache.org/zh/docs/目前Dubbo最新的是Dubbo3。本文使用的是2.7.13。Dubbo3格式的Provider地址不能被Dubbo2的Consumer识别到,反之......
  • 计算机编程入门
    简介简单地说,计算机编程是使计算机执行不同任务的一种方式。这是一个编写机器可以理解的指令集(也称为代码)并使机器遵循它们的过程。最终目标可能是解决数学方程式,自动执行......
  • VUE笔记深夜毒鸡汤
    实现加载一个地址请求和跳转的同时动作<script>importCustomInputfrom'./CustomInput.vue'exportdefault{components:{CustomInput},data(){retur......
  • 20201220蔡笃俊《信息安全系统设计与实现》第十一章学习笔记
    ext2文件系统一、任务内容自学教材第11章,提交学习笔记(10分)知识点归纳以及自己最有收获的内容(3分)问题与解决思路(2分)实践内容与截图,代码链接(3分)...(知识的结构化,知识......
  • ESP-IDF 挖坑入门
    开始搞esp32,目前先从esp32-c3入坑还是对platformio比较熟悉,用它开发ESP-IDF应该不错但是遇到坑是难免的箭头没法用idf通过menuconfig配置整个项目,在platformio下,用pio......
  • 科研入门常识
    科研入门路径:1,读论文(尽量少用翻译机,可以查词)如何找论文:第一遍直接读,获取文章意思;第二遍,把自己当成作者该怎么写,对照原作者写法,原作者为什么这么想,这么写找文献(图书馆电......
  • GTK入门学习:信号与回调函数
    前面我们学习的GTK界面都是静态的,我们按下按钮它是没有响应的,如何让它有响应呢?接下来我们一起学习GTK的信号与回调函数。GTK采用了信号与回调函数来处理窗口外部传来的事件......
  • 【笔记】Java相关大杂烩②
    【笔记】Java相关大杂烩②if单分支情况下,如果没有加{},那么默认只包含第一条语句。if和else分支后面如果包含多条语句,那么需要使用{}括起来。不能随意地使用数学上......