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 相关文章推荐
jupyter安装小结
Mar 13 Python
Python利用operator模块实现对象的多级排序详解
May 09 Python
Python冲顶大会 快来答题!
Jan 17 Python
python3+PyQt5重新实现自定义数据拖放处理
Apr 19 Python
Python实现的求解最小公倍数算法示例
May 03 Python
Python mutiprocessing多线程池pool操作示例
Jan 30 Python
使用Python中的reduce()函数求积的实例
Jun 28 Python
手把手教你Python yLab的绘制折线图的画法
Oct 23 Python
Python中Subprocess的不同函数解析
Dec 10 Python
Python中实现输入一个整数的案例
May 03 Python
如何验证python安装成功
Jul 06 Python
python中zip()函数遍历多个列表方法
Feb 18 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递归调用的小技巧讲解
2013/02/19 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
PHP单链表的实现代码
2016/07/05 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
javascript中创建对象的几种方法总结
2013/11/01 Javascript
Backbone.js的一些使用技巧
2015/07/01 Javascript
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
基于vue中keep-alive缓存问题的解决方法
2018/09/21 Javascript
详解vue-router导航守卫
2019/01/19 Javascript
vue实现动态按钮功能
2019/05/13 Javascript
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
python基于queue和threading实现多线程下载实例
2014/10/08 Python
详解Python中的正则表达式的用法
2015/04/09 Python
Python字典及字典基本操作方法详解
2018/01/30 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
2019/12/17 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
超市5.1促销活动
2014/01/15 职场文书
幼儿园安全检查制度
2014/01/30 职场文书
党员党性分析材料
2014/02/17 职场文书
员工生日会策划方案
2014/06/14 职场文书
毕业典礼主持词
2015/06/29 职场文书
导游词之崇武古城
2019/10/07 职场文书
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
python对文档中元素删除,替换操作
2022/04/02 Python
MySQL数据库 任意ip连接方法
2022/05/20 MySQL