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中django框架通过正则搜索页面上email地址的方法
Mar 21 Python
Python中使用Beautiful Soup库的超详细教程
Apr 30 Python
详解django中使用定时任务的方法
Sep 27 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
Mar 20 Python
Python实现的矩阵转置与矩阵相乘运算示例
Mar 26 Python
python接口自动化(十六)--参数关联接口后传(详解)
Apr 16 Python
python爬取基于m3u8协议的ts文件并合并
Apr 26 Python
Python 控制终端输出文字的实例
Jul 12 Python
Python爬取破解无线网络wifi密码过程解析
Sep 17 Python
python pyg2plot的原理知识点总结
Feb 28 Python
python实现高效的遗传算法
Apr 07 Python
Python获取百度热搜的完整代码
Apr 07 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
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
JS 实现完美include载入实现代码
2010/08/05 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
js利用正则表达式检验输入内容是否为网址
2016/07/05 Javascript
jQuery 获取页面li数组并删除不在数组中的key
2016/08/02 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
2018/05/09 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
JS重学系列之聊聊new操作符
2019/03/04 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
python中wx将图标显示在右下角的脚本代码
2013/03/08 Python
python基础教程之Filter使用方法
2017/01/17 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
python版本五子棋的实现代码
2018/12/11 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
tensorflow常用函数API介绍
2020/04/19 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
掌上明珠Java程序员面试总结
2016/02/23 面试题
项目申报专员岗位职责
2014/07/09 职场文书
公司合作协议范文
2014/10/01 职场文书
2014年行政部工作总结
2014/11/19 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
2015年中秋节主持词
2015/07/30 职场文书
申请吧主发表的感言
2015/08/03 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis
与Windows10相比Windows11有哪些改进?值不值得升级?
2021/11/21 数码科技