首页 > 其他分享 >爬虫入门基础探索Scrapy框架之Selenium反爬

爬虫入门基础探索Scrapy框架之Selenium反爬

时间:2023-09-23 18:32:28浏览次数:41  
标签:浏览器 反爬 Selenium 爬虫 Scrapy selenium

爬虫入门基础探索Scrapy框架之Selenium反爬_驱动程序

  Scrapy框架是一个功能强大的Python网络爬虫框架,用于高效地爬取和提取网页数据。然而,有一些网站采用了各种反爬机制,例如JavaScript反爬、验证码等,这给爬虫的开发带来了挑战。为了解决这个问题,可以使用Selenium库来处理这些反爬机制。本文将介绍Selenium的基本原理和使用方法,以帮助您应对网站的反爬挑战。

 一、Selenium库简介

 Selenium是一个自动化测试工具,它可以模拟用户的行为,打开浏览器并执行各种操作,如点击、填写表单、处理JavaScript等。通过使用Selenium,可以绕过网站的反爬机制,获取渲染后的页面内容。

 二、使用Selenium处理反爬

 1.安装Selenium:首先,需要安装Selenium库和相应的浏览器驱动。Selenium支持多种浏览器,如Chrome、Firefox等。您可以根据需要选择合适的浏览器。安装Selenium库的命令如下:

```

  pip install selenium

  ```

 2.下载浏览器驱动:根据选择的浏览器,需要下载相应的驱动程序。例如,如果选择Chrome浏览器,可以从官方网站下载ChromeDriver。下载后,将驱动程序添加到系统的环境变量中,或将其放置在可执行文件的路径下。

 3.配置Scrapy:在Scrapy项目的设置文件(settings.py)中,进行以下配置:  

```python

  DOWNLOADER_MIDDLEWARES={

  'scrapy_selenium.SeleniumMiddleware':800,

  }

  SELENIUM_DRIVER_NAME='chrome'#设置Selenium使用的浏览器

  SELENIUM_DRIVER_EXECUTABLE_PATH='/path/to/chromedriver'#设置浏览器驱动的路径

  ```

 4.在Scrapy爬虫代码中使用Selenium:在需要使用Selenium的Request中,添加`meta`参数,并设置`selenium`关键字为True。例如:  

```python

  import scrapy

  class MySpider(scrapy.Spider):

  #...

  def start_requests(self):

  yield scrapy.Request(url,self.parse,meta={'selenium':True})

  def parse(self,response):

  #...

  ```

 在`parse`方法中,您可以使用Selenium操作渲染后的页面,如查找元素、点击按钮等。

 通过集成Selenium,Scrapy可以模拟用户的行为,获取渲染后的页面内容,从而更好地应对各种反爬挑战。通过安装、配置和使用Selenium,您可以增强自己的网络爬虫能力,提高爬取数据的效率和准确性。

标签:浏览器,反爬,Selenium,爬虫,Scrapy,selenium
From: https://blog.51cto.com/u_14448891/7580243

相关文章

  • selenium自动化测试-获取黄金实时价格
    最近黄金比较火爆,想要获取黄金实时价格,方便后续监控预警价格,一般实时刷新的网页数据都是动态加载的,需要用到selenium自动化测试获取动态页面数据。昨天学会了获取动态网页小说内容,同理也可以获取动态网页的黄金实时价格。第一步:先确定目标网址网上随便百度一下黄金实时价格: ......
  • selenium库浅析
    selenium库浅析基于4.3pipinstallselenium安装好后,在sitepackages下2个主要的目录,common和webdriver1-common该目录一共就一个模块exceptions.py①exceptions.py其中定义了32个异常,竟然有个同学面试的时候被问过异常说明WebDriverException主异常,下面的都......
  • Selenium超时等待问题的处理方案
    Selenium广泛应用于自动化测试和自动化业务开发,同时在网络爬虫中也有较多的应用,使用Selenium有两个核心的问题:第一个是如何在爬虫领域不被识别出来,另一个是在自动化领域如何解决超时加载的问题。今天来总结一下处理Selenium在自动化业务中的超时加载,让程序不在奔溃,同时能准确的获......
  • selenium 报错 element not interactable: [object HTMLDivElement] has no size and
    selenium自动化识别验证码x,y坐标 命令move_to_element_with_offset报错:elementnotinteractable:[objectHTMLDivElement]hasnosizeandlocation由于>4.0是以中心点偏移,4.0是左上角偏移。卸载掉最新的seleniuim:pipuninstallselenium安装selenium4.0:pipinstalls......
  • selenium自动化测试-获取动态页面小说
    有的网站页面是动态加载的资源,使用bs4库只能获取静态页面内容,无法获取动态页面内容,通过selenium自动化测试工具可以获取动态页面内容。参考之前的"bs4库爬取小说工具"文章代码,稍微修改下,就可以转成获取动态页面小说工具。第一步:先确定目标网址先找到小说目录页面。网址首页:'ht......
  • selenium自动化测试-登录网站用户
    昨天学习了selenium自动化测试工具的入门,知道了Selenium是用于自动化控制浏览器做各种操作,打开网页,点击按钮,输入表单等等。今天学习通过selenium自动化测试工具自动登录某网站用户操作。第一步:确定目标网址比如:天天基金网站登录页面"https://login.1234567.com.cn/login"第二......
  • selenium 滚动截图参考
       Selenium本身并不直接支持滚动截图,但是你可以通过编程方式实现滚动截图。下面是一个Python的例子,使用Selenium和PIL库实现滚动截图:fromseleniumimportwebdriverfromPILimportImageimporttime#初始化浏览器驱动driver=webdriver.Firefox()......
  • Python从入门到实战-Scrapy源码2-核心组件
    Scrapy核心组件本篇文章解决:Scrapy有哪些核心组件?以及它们主要负责了哪些工作?这些组件为了完成这些功能,内部又是如何实现的?爬虫类上次讲到Scrapy运行起来后,执行到最后到了Crawler的crawl方法,我们来看这个方法:@defer.inlineCallbacksdefcrawl(self,*args,**kwargs)......
  • 使用 Selenium 或其他工具模拟浏览器使用及语法代码
    使用Selenium模拟浏览器使用的代码示例如下:fromseleniumimportwebdriverfromselenium.webdriver.common.keysimportKeys#创建浏览器驱动实例driver=webdriver.Chrome()#打开网页driver.get("https://www.example.com")#查找并填写表单search_box=driver.f......
  • Selenium八大定位方法
    From: https://mp.weixin.qq.com/s/e0Kj7SrTRL_hP2fS5zPg2g-------------------------------------------------------------------------------------引言在使用Selenium进行Web自动化测试时,准确地定位元素是非常重要的一步。Selenium提供了多种元素定位方法,本文将深入探究这......