立即注册
查看: 2912|回复: 0

[JAVA经验分享] Scrapy爬虫技巧分享

已绑定手机
发表于 2020-7-8 17:16:50 | 显示全部楼层 |阅读模式 来自 四川省成都市
Scrapy爬虫是用python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。Scrapy 使用了 Twisted'twɪstɪd异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。Scrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv、json等文件中。它能我们更好的完成爬虫任务,自己写Python爬虫程序好比孤军奋战,而使用了Scrapy就好比手底下有了千军万马Scrapy Engine(Scrapy核心) 负责数据流在各个组件之间的流。Spiders(爬虫)发出Requests请求,经由Scrapy Engine(Scrapy核心) 交给Scheduler(调度器),downloader(下载器)Scheduler(调度器) 获得Requests请求,然后根据Requests请求,从网络下载数据。Downloader(下载器)的Responses响应再传递给Spiders进行分析。根据需求提取出Items,交给Item Pipeline进行下载。Spiders和Item Pipeline是需要用户根据响应的需求进行编写的。除此之外,还有两个中间件,Downloaders Mddlewares和Spider Middlewares,这两个中间件为用户提供方面,通过插入自定义代码扩展Scrapy的功能,例如去重等。
在正式开始爬虫编写之前,有几种小技巧,可以方便我们操纵和调试爬虫。
一、建立main.py文件,直接在Pycharm下进行调试    很多时候我们在使用Scrapy爬虫框架的时候,如果想运行Scrapy爬虫项目的话,一般都会想着去命令行中直接执行命令“scrapy crawl crawler_name”,其中crawler_name指的是爬虫的名字,在一开始创建Scrapy爬虫模板的时候就指定了的,而且在该爬虫项目中具有唯一性。但是每次跑到命令行下去执行,看交互的结果,有时候并不是很清晰,所以这里介绍一种方法,可以帮助大家提高开发效率,尤其是调试的时候更是显得方便。在与爬虫项目的scrapy.cfg文件同级目录下建立一个main.py文件,用于控制整个爬虫项目的执行。在该文件夹中写入的代码见下图。其中execute函数是内嵌在scrapy中的,调用这个函数可以直接调用该Scrapy工程项目的爬虫脚本,这个函数的执行需要在爬虫项目的父目录下进行。而第7行代码的意思就是获取当前py文件的父目录,省去我们直接复制路径的精力和时间,同时也方便我们将该项目放到其他的平台上去运行,不会报路径的错误。execute函数里边的参数其实就是将Scrapy爬虫执行命令拆分,然后分别以一个字符的方式放到了一个数组中。之后我们直接运行这个main.py文件便可以调用Scrapy爬虫程序了。
二、设置网站robots.txt规则为False一般的,我们在运用Scrapy框架抓取数据之前,需要提前到settings.py文件中,将“ROBOTSTXT_OBEY = True”改为ROBOTSTXT_OBEY = False。在未改动之后settings.py文件中默认爬虫是遵守网站的robots.txt规则的,如下图所示。如果遵守robots.txt规则的话,那么爬取的结果会自动过滤掉很多我们想要的目标信息,因此有必要将该参数设置为False,如下图所示。设置好robots.txt规则之后,我们便可以抓到更多网页的信息。关于Scrapy爬虫项目运行和调试的部分小技巧有很多,希望小伙伴们可以多多利用起来,让其为自己的项目服务,可以事半功倍。同时Scrapy爬虫需要配合亿牛云高质量的爬虫代理IP 才能更加长期稳定采集相关数据。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表