iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >scrapy中selenium的应用
  • 835
分享到

scrapy中selenium的应用

scrapyselenium 2023-01-30 23:01:08 835人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

  在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值。但是通过观察我们会发现,通过浏览器进行url请求发送则会加载出

  在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值。但是通过观察我们会发现,通过浏览器进行url请求发送则会加载出对应的动态加载出的数据。那么如果我们想要在scrapy也获取动态加载出的数据,则必须使用selenium创建浏览器对象,然后通过该浏览器对象进行请求发送,获取动态加载的数据值。

1.案例分析:

  需求:爬取网易新闻的国内板块下的新闻数据

  需求分析:当点击国内超链进入国内对应的页面时,会发现当前页面展示的新闻数据是被动态加载出来的,如果直接通过程序对url进行请求,是获取不到动态加载出的新闻数据的。则就需要我们使用selenium实例化一个浏览器对象,在该对象中进行url的请求,获取动态加载的新闻数据。

2.selenium在scrapy中使用的原理分析:

  当引擎将国内板块url对应的请求提交给下载器后,下载器进行网页数据的下载,然后将下载到的页面数据,封装到response中,提交给引擎,引擎将response在转交给Spiders。Spiders接受到的response对象中存储的页面数据里是没有动态加载的新闻数据的。要想获取动态加载的新闻数据,则需要在下载中间件中对下载器提交给引擎的response响应对象进行拦截,切对其内部存储的页面数据进行篡改,修改成携带了动态加载出的新闻数据,然后将被篡改的response对象最终交给Spiders进行解析操作。

3.selenium在scrapy中的使用流程:

  1. 重写爬虫文件的构造方法,在该方法中使用selenium实例化一个浏览器对象(因为浏览器对象只需要被实例化一次)
  2. 重写爬虫文件的closed(self,spider)方法,在其内部关闭浏览器对象。该方法是在爬虫结束时被调用
  3. 重写下载中间件的process_response方法,让该方法对响应对象进行拦截,并篡改response中存储的页面数据
  4. 在配置文件中开启下载中间件

4.代码展示:

爬虫文件:

class WangyiSpider(RedisSpider):
    name = 'wangyi'
    #allowed_domains = ['www.xxxx.com']
    start_urls = ['https://news.163.com']
    def __init__(self):
        #实例化一个浏览器对象(实例化一次)
        self.bro = WEBdriver.Chrome(executable_path='/Users/bobo/Desktop/chromedriver')

    #必须在整个爬虫结束后,关闭浏览器
    def closed(self,spider):
        print('爬虫结束')
        self.bro.quit()

中间件文件:

from scrapy.Http import htmlResponse    
    #参数介绍:
    #拦截到响应对象(下载器传递给Spider的响应对象)
    #request:响应对象对应的请求对象
    #response:拦截到的响应对象
    #spider:爬虫文件中对应的爬虫类的实例
    def process_response(self, request, response, spider):
        #响应对象中存储页面数据的篡改
        if request.url in['http://news.163.com/domestic/','http://news.163.com/world/','http://news.163.com/air/','http://war.163.com/']:
            spider.bro.get(url=request.url)
            js = 'window.scrollTo(0,document.body.scrollHeight)'
            spider.bro.execute_script(js)
            time.sleep(2)  #一定要给与浏览器一定的缓冲加载数据的时间
            #页面数据就是包含了动态加载出来的新闻数据对应的页面数据
            page_text = spider.bro.page_source
            #篡改响应对象
            return HtmlResponse(url=spider.bro.current_url,body=page_text,encoding='utf-8',request=request)
        else:
            return response

配置文件:

DOWNLOADER_MIDDLEWARES = {
    'wangyiPro.middlewares.WangyiproDownloaderMiddleware': 543,

}

 

--结束END--

本文标题: scrapy中selenium的应用

本文链接: https://www.lsjlt.com/news/180853.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • scrapy中selenium的应用
      在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值。但是通过观察我们会发现,通过浏览器进行url请求发送则会加载出...
    99+
    2023-01-30
    scrapy selenium
  • selenium在scrapy中的使用代码
    在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值。但是通过观...
    99+
    2024-04-02
  • Scrapy爬虫框架集成selenium的方法
    这篇文章主要讲解了“Scrapy爬虫框架集成selenium的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Scrapy爬虫框架集成selenium的方法”吧!一、架构介绍Scrapy一...
    99+
    2023-06-30
  • python中Scrapy shell的使用
    前言: 我们想要在爬虫中使用xpath、beautifulsoup、正则表达式,css选择器等来提取想要的数据,但是因为scrapy是一个比较重的框架,每次运行都要等到一段时间,因此...
    99+
    2024-04-02
  • Scrapy的中间件如何使用
    这篇文章主要讲解了“Scrapy的中间件如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Scrapy的中间件如何使用”吧!Scrapy 结构概述:一、下载器中间件(Downloader...
    99+
    2023-07-02
  • Python中的Scrapy框架怎么使用
    这篇文章主要讲解了“Python中的Scrapy框架怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中的Scrapy框架怎么使用”吧!安装Scrapy首先,您需要在您的计算...
    99+
    2023-07-05
  • Python中Selenium的基本使用
    目录 一、Selenium是什么? 二、使用步骤   1.引入库   2.下载浏览器驱动   3.配置浏览器驱动    4.创建WebDriver对象   4.1.options    4.2.service   4.3...
    99+
    2023-09-29
    selenium python
  • Selenium中的option使用示例
    目录01. 无痕模式02. 启动时窗口大小设置03. 去掉浏览器被自动化软件控制的提示04. 伪造user-agent05. 禁止弹窗在上一篇文章Selenium中免登录的实现方法一...
    99+
    2022-12-14
    Selenium中的option用法 Selenium option使用
  • scrapy的简单使用
    使用之前的创建虚拟环境方法(pipenv) 创建虚拟环境并进入虚拟环境 mkdir douban cd douban pipenv install pipenv shell 再安装我们的scrapy pipenv install s...
    99+
    2023-01-30
    简单 scrapy
  • Scrapy 之中间件(Middleware)的具体使用
    目录一、下载器中间件(Downloader Middleware)process_request(request, spider)process_response(request, ...
    99+
    2024-04-02
  • 使用Scrapy自带的ImagesPip
    ImagesPipeline是scrapy自带的类,用来处理图片(爬取时将图片下载到本地)用的。 优势: 将下载图片转换成通用的JPG和RGB格式 避免重复下载 缩略图生成 图片大小过滤 异步下载 ...... 工作流程: 爬取一个...
    99+
    2023-01-30
    自带 Scrapy ImagesPip
  • Python中selenium有什么用
    小编给大家分享一下Python中selenium有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Python爬虫、数据分析、网站开发等案例教程视频免费在线观...
    99+
    2023-06-15
  • scrapy框架ItemPipeline的使用
    目录Item Pipeline简介功能:一、一个自己的Pipeline类二、启用一个Item Pipeline组件将item写入JSON文件将item写入MongoDBItem Pi...
    99+
    2024-04-02
  • python中selenium库的用法是什么
    Selenium是一个用于自动化web浏览器的库,可以使用它来模拟用户在浏览器中的操作,例如点击按钮、填写表单、导航到不同的页面等。...
    99+
    2023-10-25
    python selenium
  • Python中Selenium对Cookie的使用方式
    本篇内容介绍了“Python中Selenium对Cookie的使用方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、Cookie介绍HT...
    99+
    2023-06-20
  • python爬虫框架Scrapy基本应用学习教程
    在正式编写爬虫案例前,先对 scrapy 进行一下系统的学习。 scrapy 安装与简单运行 使用命令 pip install scrapy 进行安装,成功之后,还需要随手收藏几个网...
    99+
    2024-04-02
  • 精选scrapy框架的关键特点及其应用场景
    精选Scrapy框架的关键特点及其应用场景 异步处理:Scrapy采用异步处理机制,能够同时发送多个请求,提高爬取效率。它支持并发处理,可以并行下载多个页面,从而减少爬取时间。 方便的选择器:Scrapy内置了强大的选择器,使...
    99+
    2024-01-19
    应用场景 Scrapy 特点
  • 使用Scrapy框架时怎么应对普通的反爬机制
    这篇文章主要讲解了“使用Scrapy框架时怎么应对普通的反爬机制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用Scrapy框架时怎么应对普通的反爬机制”...
    99+
    2024-04-02
  • 如何在python中使用scrapy模块
    这篇文章将为大家详细讲解有关如何在python中使用scrapy模块,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。二、基本使用2.1 环境安装1.linux和mac操作系统:pip ...
    99+
    2023-06-06
  • Python中使用selenium库的示例分析
    这篇文章主要介绍Python中使用selenium库的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、selenium简介官网总的来说: selenium库主要用来做浏览器的自动化脚本库。二、seleniu...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作