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 批量更改图像尺寸到统一大小的方法
Mar 31 Python
python pandas dataframe 行列选择,切片操作方法
Apr 10 Python
python爱心表白 每天都是浪漫七夕!
Aug 18 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
Dec 14 Python
Django框架安装方法图文详解
Nov 04 Python
Python笔记之工厂模式
Nov 20 Python
使用Matplotlib 绘制精美的数学图形例子
Dec 13 Python
通过python调用adb命令对App进行性能测试方式
Apr 23 Python
Python RabbitMQ实现简单的进程间通信示例
Jul 02 Python
详解python变量与数据类型
Aug 25 Python
Django生成数据库及添加用户报错解决方案
Oct 09 Python
Python实现简单的2048小游戏
Mar 01 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
php一些公用函数的集合
2008/03/27 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
2013/06/21 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
php限制上传文件类型并保存上传文件的方法
2015/03/13 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
jquery 简单的进度条实现代码
2010/03/11 Javascript
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
js闭包实例汇总
2014/11/09 Javascript
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
Python基于PycURL自动处理cookie的方法
2015/07/25 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
解决pycharm remote deployment 配置的问题
2019/06/27 Python
django页面跳转问题及注意事项
2019/07/18 Python
Python多线程及其基本使用方法实例分析
2019/10/29 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
将keras的h5模型转换为tensorflow的pb模型操作
2020/05/25 Python
Python Sqlalchemy如何实现select for update
2020/10/12 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
冰淇淋店的创业计划书
2014/02/07 职场文书
授权委托书格式模板
2014/04/03 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
红色旅游心得体会
2014/09/03 职场文书
离婚协议书格式范本
2016/03/18 职场文书
Python import模块的缓存问题解决方案
2021/06/02 Python