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的GUI框架PySide的安装配置教程
Feb 16 Python
Python实现矩阵加法和乘法的方法分析
Dec 19 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
Windows上使用Python增加或删除权限的方法
Apr 24 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
python实现nao机器人手臂动作控制
Apr 29 Python
ipython和python区别详解
Jun 26 Python
把django中admin后台界面的英文修改为中文显示的方法
Jul 26 Python
浅析PyTorch中nn.Linear的使用
Aug 18 Python
python抓取多种类型的页面方法实例
Nov 20 Python
小 200 行 Python 代码制作一个换脸程序
May 12 Python
python源文件的字符编码知识点详解
Mar 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
mysql 全文搜索 技巧
2007/04/27 PHP
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
建站常用13种PHP开源CMS比较
2009/08/23 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
解决FastCGI 进程超过了配置的活动超时时限的问题
2013/07/03 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
2017/06/02 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
python练习程序批量修改文件名
2014/01/16 Python
Python判断文本中消息重复次数的方法
2016/04/27 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
浅谈HTML5新增及移除的元素
2016/06/27 HTML / CSS
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
英文自荐信
2013/12/15 职场文书
校园之声广播稿
2014/01/31 职场文书
大学生毕业求职自荐书范文
2014/02/04 职场文书
市级文明单位申报材料
2014/05/07 职场文书
2016年春节问候语
2015/11/11 职场文书
Redis安装启动及常见数据类型
2021/04/14 Redis
Vue如何实现组件间通信
2021/05/15 Vue.js
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python