文章分类 - 爬虫
增量式爬虫
摘要:在我们浏览一部分网页的时候会发现,某些网站会定时在原有的网页数据的基础上更新一批数据,当我们在爬虫的过程中遇到这样的情况,我们也需要过滤掉已经爬过的数据,只爬取刚刚更新出来的数据,防止做大量不必要的操作 概念 通过爬虫程序监测某网站数据更新的情况,以便可以爬取到该网站更新出的新数据 如何进行增量式爬
阅读全文
分布式爬虫----基于scrapy-redis两种形式
摘要:scrapy框架是不可以自己实现分布式的,原因有二。 一:因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls列表中的url。(多台机器无法共享同一个调度器) 二:多台机器爬取到的数据无法通过同一个管道对数据进行统一的数据持久出存储。(多台机器无法共
阅读全文
CrawlSpider-----有效解决分页爬取
摘要:如果想要通过爬虫程序去爬取某个网站全部页码或者部分页码的数据的话,有几种实现方法呢 1, 基于scrapy框架中的spider的递归爬取进行实现(Request递归毁掉parse方法) 2, 基于CrawlSpider的自动爬取,这种方法更加简洁和高效,更推荐使用 一, 简介 CrawlScrapy
阅读全文
下载中间件使用(二)----selenium的应用(篡改响应内容)
摘要:在通过scrapy框架进行某些网站数据爬取的时候,往往会有页面数据动态加载的情况,如果不做其他操作,获取到的仅仅是当前页面加载的数据,是获取不到动态加载出来的那部分的,所以这时候我们就用到了selenium创建浏览器对象,然后通过该浏览器对象进行请求发送,获取动态加载的数据 selenium在scr
阅读全文
下载中间件的使用(一)-----UA池和代理池
摘要:在引擎将请求传递给下载器的过程中,下载中间件可以对请求进行一些处理,比如设施请求的UA,设置代理等,目的在于防止网站的反爬策略 一 , UA池 作用: 尽可能多的将scrapy工程中的请求伪装成不同类型的浏览器身份 操作流程 1, 在下载中间件中拦截请求 2, 将拦截到的请求的请求头信息中的UA进行
阅读全文
如何提高scrapy的爬取效率
摘要:增加并发: 默认scrapy开启的并发线程为32个,可以适当进行增加。在settings配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100。 降低日志级别: 在运行scrapy时,会有大量日志信息的输出,为了减少CPU的使用率。可以设置log输出信息为I
阅读全文
scrapy----请求传参
摘要:有些时候,我们需要爬取的网站数据不在同一个页面中,比如说我们要爬取一个电影网站,电影的名称在一个页面,而详情信息在其二级子页面中,这个时候我们就需要用到请求传参,来将数据统一封装到item中,然后统一发送给管道文件进行持久化存储 请求传参的参数及用法: 案例 : 爬取www.id97.com电影网,
阅读全文
scrapy框架----日志等级
摘要:在使用scrapy crawl 爬虫文件名 这条命令运行程序时,在终端打印输出的就是scrapy的日志信息 日志信息的种类: ERROR : 一般错误 WARNING : 警告 INFO : 一般的信息 DEBUG : 调试信息 设置日志信息指定输出: 在settings.py配置文件中加入
阅读全文
scrapy五大核心组件及post请求
摘要:一, 五大核心组件工作流程 引擎(Scrapy) 用来处理整个系统的数据流处理, 触发事务(框架核心) 调度器(Scheduler) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个 URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址
阅读全文
scrapy框架----持久化存储、递归解析
摘要:一, 基于终端指令的持久化存储 要保证爬虫文件的parse方法中有可迭代类型对象(一般是列表或字典)的返回,该返回值可以通过终端指令的形式写入指定格式的文件中,进行持久化存储的操作 持久化存储的命令: 二 , 基于管道的持久化存储 scrapy框架中已经为我们专门集成好了高效,便捷的持久化操作功能,
阅读全文
scrapy框架----简介和基础使用
摘要:一, 简介 scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架 scrapy用途付昂范,可以用于数据挖掘,监测和自动化测试 scrapy使用了twisted异步网络来处理网络通讯 Scrapy运行流程: 二, 安装 Linux : Windows : 三 , 基础使用 使用scrap
阅读全文
爬虫+多线程
摘要:有时候需要爬取的数据量比较大,我们可以使用多线程进行操作,下面直接上示例 利用线程池爬取梨视频的短视频 pool.map() 传递的是两个参数第一个参数是一个函数名(不带()),第二个参数是个迭代对象。 这里我们请求和存储都使用线程池,所以要将请求和保存都单独封装成函数,方便给pool.map()传
阅读全文
selenium ------- 浏览器自动化操作
摘要:什么是selenium selenium是python的一个第三方库,提供的接口可以操作浏览器,让浏览器完成自动化的操作 安装 获取某一款浏览器的驱动程序(一谷歌为例) 谷歌浏览器驱动下载地址 : http://chromedriver.storage.googleapis.com/index.ht
阅读全文
图片懒加载
摘要:什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/中的图片数据 - 运行结果观察发现,我们可以获取图片的名称,但是链接获取的为空,检查后发现xpath表达式也没有问题,究其原因出在了哪里呢? 图片懒加载概念: 图片懒加载是一种网页优化技术。图片作为一种网络资源,在被
阅读全文
验证码处理
摘要:在我们爬取一些网站的时候,某些功能有可能需要登录,如果连续登录几次的话,会出现验证码,来达到分流或者反爬的效果 "上有政策,下有对策",网站使用验证码来阻止我们爬取内容,我们也有应对验证码的方法,这里我们使用的是云打码平台进行验证码的识别和验证 云打码网址 : http://www.yundama.
阅读全文
各种反爬机制及解决方法
摘要:robots UA User-Agent参数,简称为UA,有些网站会通过辨别请求的UA来判别该请求的载体是否为爬虫程序,如果为爬虫程序,则不会给该请求返回响应,那么我们的爬虫程序则也无法通过请求爬取到该网站中的数据值,这也是反爬虫的一种初级技术手段。那么为了防止该问题的出现,则我们可以给爬虫程序的U
阅读全文
聚焦爬虫-----三种数据解析方式
摘要:一, 正则解析 常用正则表达式回顾: 爬取糗事百科指定页面的糗图,并将其保存到指定文件夹中 二, bs4 BeautifulSoup解析 安装 基础使用 使用bs4实现将诗词名句网站中三国演义小说的每一章的内容爬去到本地磁盘进行存储 http://www.shicimingju.com/book/s
阅读全文
requests模块-----之一
摘要:request模块是什么 request模块是python中原生的基于网络请求的模块,主要作用是用来模拟浏览器发起请求,在爬虫中应用广泛 为什么使用request模块 request模块可以自动处理url编码,自动处理post请求,简化cookie和代理操作等,这些操作都是urllib模块实现不了的
阅读全文
爬虫第一弹----安装相关软件及''坑''
摘要:Anaconda在官网就可以下载,网址:https://www.anaconda.com/distribution/#download-section ,官网上可以选择各个操作系统的安装包 我们选择最新版本的安装包下载下来,然后双击下载下来的.exe文件就可以安装了,基本上一直下一步傻瓜式安装 最后
阅读全文