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的汉字转GBK码实现代码
Feb 19 Python
python装饰器decorator介绍
Nov 21 Python
使用url_helper简化Python中Django框架的url配置教程
May 30 Python
Python编程之event对象的用法实例分析
Mar 23 Python
python字符串的方法与操作大全
Jan 30 Python
python调用百度语音REST API
Aug 30 Python
使用python判断你是青少年还是老年人
Nov 29 Python
python调用虹软2.0第三版的具体使用
Feb 22 Python
使用django的objects.filter()方法匹配多个关键字的方法
Jul 18 Python
Anaconda 查看、创建、管理和使用python环境的方法
Dec 03 Python
windows、linux下打包Python3程序详细方法
Mar 17 Python
python中entry用法讲解
Dec 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
递归列出所有文件和目录
2006/10/09 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
Js组件的一些写法
2010/09/10 Javascript
你必须知道的Javascript知识点之"单线程事件驱动"的使用
2013/04/23 Javascript
jQuery的slideToggle方法实例
2013/05/07 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
vue快捷键与基础指令详解
2017/06/01 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
2020/02/09 Javascript
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
Python中矩阵创建和矩阵运算方法
2018/08/04 Python
python多线程下信号处理程序示例
2019/05/31 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
python 微信好友特征数据分析及可视化
2020/01/07 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
python能否java成为主流语言吗
2020/06/22 Python
生物制药毕业生自荐信
2013/10/16 职场文书
电气自动化大学生求职信
2013/10/16 职场文书
个人自我评价和职业目标
2014/01/24 职场文书
财务人员的自我评价范文
2014/03/03 职场文书
初三班主任寄语大全
2014/04/04 职场文书
小学教育见习报告
2014/10/31 职场文书
倡议书作文
2015/01/19 职场文书
物业保安辞职信
2015/05/12 职场文书
就业推荐表院系意见
2015/06/05 职场文书
回复函范文
2015/07/14 职场文书