温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

scrapy框架的简单介绍

发布时间:2021-09-15 17:40:37 来源:亿速云 阅读:120 作者:chen 栏目:编程语言

这篇文章主要介绍“scrapy框架的简单介绍”,在日常操作中,相信很多人在scrapy框架的简单介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”scrapy框架的简单介绍”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.Scrapy五大基本构成

  • Scrapy框架主要由五大组件组成,分别是调度器(Scheduler)、下载器(Downloader)、爬虫(Spider)和实体管道(Item Pipeline)、Scrapy引擎(Scrapy Engine);

  • 调度器:可以假设成一个URL的优先队列,由它来决定下一个要抓取的网址是什么,同时去除重复的网址;

  • 下载器:是所有组件中负担最大的,用于高速地下载网络上的资源;

  • 爬虫:是用户最关心的部份,用户定制自己的爬虫,用于从特定的网页中提取自己需要的信息,也可以从中提取出链接,让Scrapy继续抓取下一个页面;

  • 实体管道:用于处理爬虫提取的实体,要的功能是持久化实体、验证实体的有效性、清除不需要的信息;

  • Scrapy引擎:是整个框架的核心,用来控制调试器、下载器、爬虫,实际上引擎相当于计算机的CPU,控制着整个流程;

2.使用scrapy框架爬取网页数据

  • 第一步:首先要使用scrapy框架需要先安装它,可以使用pip安装scrapy框架,注意如果在Windows系统下直接使用pip命令行安装可能会报错,这时需要手动安装几个依赖库如wheel、lxml、Twisted、pywin32等,报错信息会提示你缺少哪个库。
    这里提一下Twisted插件的安装,它的下载地址为: https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted , 进入后找到twisted,选择下载对应的版本,其中cp表示python版本,下载完成后进入终端,输入pip install Twisted-19.2.0-cp37-cp37m-win_amd64.whl,这里注意你下载的是哪个版本就输入哪个版本的文件名,安装完成后再输入pip install scrapy就能成功安装scrapy框架了;

  • 第二步:创建爬虫项目,创建储存 scrapy 文件夹scrapy_python,然后在命令行工具中cd进入这个项目路径,用 scrapy startproject  名称命令新建项目;

scrapy框架的简单介绍

这样我们就成功的创建了一个scrapy项目,我们在PyCharm中看看

scrapy框架的简单介绍

  • 第三步:可以在刚刚创建的项目的spiders文件夹中创建一个蜘蛛文件,用于爬取网页数据的,我们试着爬取一下csdn网站,那么新建蜘蛛的命令行是:scrapy genspider csdn www.csdn.net,其中csdn是你创建的蜘蛛的文件名,而www.csdn.net表示爬取的目标网址的域名,你想爬取哪个网站就使用哪个网站的域名。

  • 第四步:如果要启动我们创建的蜘蛛文件,我们可以使用命令行:scrapy crawl csdn,这里的csdn是蜘蛛文件中name的对应值;

scrapy框架的简单介绍

  • 第五步:想要测试爬去数据是否成功,我们可以在项目的模板中创建一个测试文件,如:start_spider.py,然后通过debug来进行项目调试,可以输出我们想要爬取的网页数据;

from scrapy.cmdline import execute
execute(["scrapy", "crawl", "csdn",])
  • 第六步:爬取数据时需要遵循爬虫协议,它用来限定爬虫程序可以爬取的内容范围,位于scrapy 项目的 settings.py文件中默认 ROBOTSTXT_OBEY = True,即遵守此协议,当我们想要爬取的内容不符合该协议但仍要爬取时,可以设置 ROBOTSTXT_OBEY = False,表示不遵守此协议;

  • 第七步:这样我们就可以开始使用Xpath选择器或者CSS选择器来解析想要爬取的页面数据了;

3.Xpath选择器的介绍

  • XPath的全称是XML Path Language,即XML路径语言,它是一种在结构化文档中定位信息的语言,XPath使用路径表达式来选取XML文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的;

  • 谓语用来查找某个特定的节点或者包含某个指定的值的节点,谓语嵌在方括号中,比如//body//a[1]表示选取属于body 子元素的第一个 a 元素,//a[ @href ]表示选取所有拥有名为 href 的属性的 a 元素等;

  • 除了索引、属性外,Xpath还可以使用便捷的函数来增强定位的准确性,如contains(s1,s2)表示如果s1中包含s2则返回true,反之返回false、text()表示获取节点中的文本内容、starts-with()表示从起始位置匹配字符串;

  • 使用XPath选取节点的常用语法有

表达式书写方式表达式意义
*选择HTML页面中任意的节点
/从根节点选取
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
.选取当前节点
..选取当前节点的父节点
/bookstore/book[1]选取属于 bookstore 子元素的第一个 book 元素
/bookstore/book[last()]选取属于 bookstore 子元素的最后一个 book 元素
/bookstore/book[last()-1]选取属于 bookstore 子元素的倒数第二个 book 元素
//title[ @lang ]选取所有拥有名为 lang 的属性的 title 元素
//title[ @lang =’eng’]选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性
/bookstore/book[price>35.00]选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00
/bookstore/book[price>35.00]/title选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00
//*选取文档中的所有元素
//title[@*]选取所有带有属性的 title 元素
//book/title , //book/price选取 book 元素的所有 title 和 price 元素
//title , //price选取文档中的所有 title 和 price 元素
child::book选取所有属于当前节点的子元素的 book 节点
child::text()选取当前节点的所有文本子节点
/bookstore/book/title选取所有 title 节点
/bookstore/book/price/text()选取 price 节点中的所有文本
//*任意元素

使用XPath

我们来通过XPath选择器爬取网站中我们想要爬取的信息,如下图我们来爬去今日推荐中的标题
scrapy框架的简单介绍

import scrapy
class CsdnSpider(scrapy.Spider):
    name = 'csdn'
    allowed_domains = ['www.csdn.net']
    start_urls = ['http://www.csdn.net/']
    def parse(self, response):
       # 选择所有class="company_name"的h4元素下的a元素的文本 
       result = response.xpath('//h4[@class="company_name"]/a/text()').extract()
       # 将得到的文本列表循环 
       for i in result:
           print(i)

我们来看一下输出打印,看看是不是我们想要的结果

scrapy框架的简单介绍

到此,关于“scrapy框架的简单介绍”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI