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中的join()函数的用法
Apr 07 Python
python实现将元祖转换成数组的方法
May 04 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
Python编程中对super函数的正确理解和用法解析
Jul 02 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
Apr 23 Python
Python获取网段内ping通IP的方法
Jan 31 Python
python3利用ctypes传入一个字符串类型的列表方法
Feb 12 Python
Python2与Python3的区别实例分析
Apr 11 Python
python单例模式原理与创建方法实例分析
Oct 26 Python
基于Python爬取fofa网页端数据过程解析
Jul 13 Python
python实现MD5进行文件去重的示例代码
Jul 09 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目录操作函数之获取目录与文件的类型
2010/12/29 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
浅谈discuz密码加密的方式
2014/05/22 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
juqery 学习之四 筛选过滤
2010/11/30 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
javascript实现类似java中getClass()得到对象类名的方法
2015/07/27 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
axios学习教程全攻略
2017/03/26 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
利用node.js实现反向代理的方法详解
2017/07/24 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
深入了解JavaScript词法作用域
2020/07/29 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
Vue ​v-model相关知识总结
2021/01/28 Vue.js
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
python数组循环处理方法
2019/08/26 Python
python、Matlab求定积分的实现
2019/11/20 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
python 变量初始化空列表的例子
2019/11/28 Python
Python容器类型公共方法总结
2020/08/19 Python
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
师德学习感言
2014/01/31 职场文书
八年级语文教学反思
2014/02/11 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
项目备案申请报告
2015/05/15 职场文书
大国崛起观后感
2015/06/02 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
golang 生成对应的数据表struct定义操作
2021/04/28 Golang