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中文问题解决方法(总结了多位前人经验,初学者必看)
Mar 13 Python
在Python中使用Mako模版库的简单教程
Apr 08 Python
Linux 下 Python 实现按任意键退出的实现方法
Sep 25 Python
Python IDLE入门简介
Dec 08 Python
Python使用Matplotlib实现雨点图动画效果的方法
Dec 23 Python
用Python3创建httpServer的简单方法
Jun 04 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
python 机器学习之支持向量机非线性回归SVR模型
Jun 26 Python
python科学计算之narray对象用法
Nov 25 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
Mar 14 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
Jul 13 Python
python 如何调用远程接口
Sep 11 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
详细介绍:Apache+PHP+MySQL配置攻略
2006/09/05 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
php数组分页实现方法
2016/04/30 PHP
JS request函数 用来获取url参数
2010/05/17 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
JavaScript 中使用 Generator的方法
2017/12/29 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
python实现的登录和操作开心网脚本分享
2014/07/09 Python
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
Python发送email的3种方法
2015/04/28 Python
在Python中使用全局日志时需要注意的问题
2015/05/06 Python
关于Python 3中print函数的换行详解
2017/08/08 Python
Python yield与实现方法代码分析
2018/02/06 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
python购物车程序简单代码
2018/04/18 Python
python遍历小写英文字母的方法
2019/01/02 Python
python redis 删除key脚本的实例
2019/02/19 Python
python分布式计算dispy的使用详解
2019/12/22 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
用CSS3实现无限循环的无缝滚动的示例代码
2017/11/01 HTML / CSS
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
自我鉴定模板
2013/10/29 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
西岭雪山导游词
2015/02/06 职场文书
检察院起诉书
2015/05/20 职场文书
2015年计算机教师工作总结
2015/07/22 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
go语言-在mac下brew升级golang
2021/04/25 Golang
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫