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使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 Python
Python动态导入模块的方法实例分析
Jun 28 Python
python实现图片筛选程序
Oct 24 Python
Python中字符串List按照长度排序
Jul 01 Python
使用pip安装python库的多种方式
Jul 31 Python
python实发邮件实例详解
Nov 11 Python
Python如何使用BeautifulSoup爬取网页信息
Nov 26 Python
Python3监控疫情的完整代码
Feb 20 Python
Pytest参数化parametrize使用代码实例
Feb 22 Python
python框架flask入门之环境搭建及开启调试
Jun 07 Python
Python fileinput模块如何逐行读取多个文件
Oct 05 Python
Python爬虫数据的分类及json数据使用小结
Mar 29 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实现异步调用方法研究与分享
2011/10/27 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
JavaScript高级程序设计 扩展--关于动态原型
2010/11/09 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
jQuery时间日期三级联动(推荐)
2016/11/27 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
五句话帮你轻松搞定js原型链
2020/12/09 Javascript
python分布式环境下的限流器的示例
2017/10/26 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
2020/03/18 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
全球性的众包图形设计市场:DesignCrowd
2021/02/02 全球购物
求职信模板怎么做
2014/01/26 职场文书
元旦获奖感言
2014/03/08 职场文书
财产公证书
2014/04/10 职场文书
大学生工作自荐书
2014/06/16 职场文书
趣味运动会广播稿
2014/09/13 职场文书
人事任命书范本
2015/09/21 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL