python爬虫使用scrapy注意事项


Posted in Python onNovember 23, 2020

在学习中,如果遇到问题把它们都收集整理出来,长期保存之后也是一份经验之谈。小编跟大家讲了这么久的scrapy框架,在自己学习的整理和小伙伴们的交流反馈中也累积了不少心得。想着有些小伙伴在python学习的时候有点丢三落四的毛病,特意整理出来scrapy在python爬虫使用中需要注意的事项,大家一起看看吧。

1.如果需要大批量分布式爬取,建议采用Redis数据库存储,可安装scrapy-redis,使用redis数据库来替换scrapy原本使用的队列结构(deque),并配合其它数据库存储,例如MySQL或者MongoDB,爬取效率将会极大提高。并且其自带的dupefilter.py负责执行requst的去重,使用redis的set数据结构,通过settings文件正确设置后,即便停止scrapy爬虫,当下次重新开始后也能自动去重。原因就是在redis已经存储了request的信息。

2.当涉及到代理IP,Headers头中间请求信息处理的时候,可以通过中间件Middleware来实现。Spider中间件是介入到Scrapy的spider处理机制的钩子框架,可以添加代码来处理发送给 Spiders的response及spider产生的item和request。

3.合理设置settings文件,需要熟练掌握settings的各种设置。

4.可以重新定义def start_requests(self)函数来加载cookie信息,form信息的提交用scrapy.FormRequest以及scrapy.FormRequest.from_response这两个函数,scrapy.FormRequest.from_response能实现自动提交form数据。

5.采用Scrapy+phantomJS。 downloadMiddleware 对从 scheduler 送来的 Request 对象在请求之前进行预处理,可以实现添加 headers, user_agent,还有 cookie 等功能 。但也可以通过中间件直接返回 HtmlResponse 对象,略过请求的模块,直接扔给 response 的回调函数处理。

class CustomMetaMiddleware(object):
  def process_request(self,request,spider):
    dcap = dict(DesiredCapabilities.PHANTOMJS)   
    dcap["phantomjs.page.settings.loadImages"] = False 
    dcap["phantomjs.page.settings.resourceTimeout"] = 10
    driver = webdriver.PhantomJS("D:xx\xx",desired_capabilities=dcap)
    driver.get(request.url)
    body = driver.page_source.encode('utf8')
    url = driver.current_url
    driver.quit()
    return HtmlResponse(request.url,body=body)

到此这篇关于python爬虫使用scrapy注意事项的文章就介绍到这了,更多相关scrapy在python爬虫使用中需要注意什么内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python getopt模块处理命令行选项实例
May 13 Python
Python写的服务监控程序实例
Jan 31 Python
Python的设计模式编程入门指南
Apr 02 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
python matplotlib画图实例代码分享
Dec 27 Python
python+opencv实现阈值分割
Dec 26 Python
python3利用ctypes传入一个字符串类型的列表方法
Feb 12 Python
Django web框架使用url path name详解
Apr 29 Python
python字符串中匹配数字的正则表达式
Jul 03 Python
Python命名空间及作用域原理实例解析
Aug 12 Python
python 用递归实现通用爬虫解析器
Apr 16 Python
OpenCV-Python直方图均衡化实现图像去雾
Jun 07 Python
python爬虫筛选工作实例讲解
Nov 23 #Python
python爬虫用scrapy获取影片的实例分析
Nov 23 #Python
python爬虫scrapy图书分类实例讲解
Nov 23 #Python
scrapy处理python爬虫调度详解
Nov 23 #Python
利用Python将多张图片合成视频的实现
Nov 23 #Python
Python系统公网私网流量监控实现流程
Nov 23 #Python
Python 调用 ES、Solr、Phoenix的示例代码
Nov 23 #Python
You might like
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
php保存信息到当前Session的方法
2015/03/16 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
Javascript 中的 && 和 || 使用小结
2010/04/25 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
jQuery电话号码验证实例
2017/01/05 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
swiper移动端轮播插件(触碰图片之后停止轮播)
2017/12/28 Javascript
element-ui表格数据转换的示例代码
2018/08/24 Javascript
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
javascript实现时钟动画
2020/12/03 Javascript
[01:02:00]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第三场 1月24日
2021/03/11 DOTA
Python3实现生成随机密码的方法
2014/08/23 Python
python os.path模块常用方法实例详解
2018/09/16 Python
python实现桌面气泡提示功能
2019/07/29 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
Python中函数的返回值示例浅析
2019/08/28 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
网游商务专员求职信
2013/10/15 职场文书
教师实习的自我鉴定
2013/10/26 职场文书
代办出身证明书
2014/10/21 职场文书
高中语文教学反思范文
2016/02/16 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS