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 相关文章推荐
教你用python3根据关键词爬取百度百科的内容
Aug 18 Python
Python实现拷贝多个文件到同一目录的方法
Sep 19 Python
python获取多线程及子线程的返回值
Nov 15 Python
Python简单生成随机数的方法示例
Mar 31 Python
python中协程实现TCP连接的实例分析
Oct 14 Python
python 输出所有大小写字母的方法
Jan 02 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
Oct 18 Python
python实现飞机大战项目
Mar 11 Python
python 监控logcat关键字功能
Sep 04 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
PHP配置心得包含MYSQL5乱码解决
2006/11/20 PHP
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
php错误级别的设置方法
2013/06/17 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
javascript背景时钟实现方法
2015/06/18 Javascript
java必学必会之static关键字
2015/12/03 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
2017/04/01 jQuery
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
vue 设置路由的登录权限的方法
2018/07/03 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Python语言实现将图片转化为html页面
2017/12/06 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
Dyson加拿大官方网站:购买戴森吸尘器,风扇,冷热器及配件
2016/10/26 全球购物
什么是设计模式
2012/06/17 面试题
小区门卫值班制度
2014/01/24 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
倡议书格式模板
2014/05/13 职场文书
环保口号大全
2014/06/12 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
Python关于OS文件目录处理的实例分享
2021/05/23 Python
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技