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实现字符串逆序输出功能示例
Jun 24 Python
python里使用正则的findall函数的实例详解
Oct 19 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
Sep 04 Python
python 生成图形验证码的方法示例
Nov 11 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
Dec 24 Python
详解django+django-celery+celery的整合实战
Mar 19 Python
Python学习笔记之自定义函数用法详解
Jun 08 Python
Jacobi迭代算法的Python实现详解
Jun 29 Python
python调用c++返回带成员指针的类指针实例
Dec 12 Python
基于python实现计算两组数据P值
Jul 10 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
Jan 19 Python
Python制作一个随机抽奖小工具的实现
Jul 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
杏林同学录(二)
2006/10/09 PHP
PHP中的CMS的涵义
2007/03/11 PHP
php数组合并的二种方法
2014/03/21 PHP
php生成短域名函数
2015/03/23 PHP
php获取twitter最新消息的方法
2015/04/14 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
2007/01/22 Javascript
在jquery中处理带有命名空间的XML数据
2011/06/13 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
全系IE支持Bootstrap的解决方法
2015/10/19 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
JS将unicode码转中文方法
2017/05/08 Javascript
vue 使用html2canvas将DOM转化为图片的方法
2018/09/11 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
2019/06/06 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Cython 三分钟入门教程
2009/09/17 Python
python时间整形转标准格式的示例分享
2014/02/14 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
学习python可以干什么
2019/02/26 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
python线程join方法原理解析
2020/02/11 Python
OpenCV中VideoCapture类的使用详解
2020/02/14 Python
python 实现图片批量压缩的示例
2020/12/18 Python
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
JACK & JONES荷兰官网:男士服装和鞋子
2021/03/07 全球购物
金融系应届毕业生求职信
2014/05/26 职场文书
霸气押韵的班级口号
2014/06/09 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书