首页 > 其他分享 >Selenium+ChromeDriver获取页面数据

Selenium+ChromeDriver获取页面数据

时间:2024-07-04 15:31:09浏览次数:18  
标签:抛出 Selenium ChromeDriver 访问 版本 cloudflare 页面

一个业务需求是从一个网站上抓取客户的评论信息,评论数据已经渲染好在html上由接口返回的,只能从HTML上一个个扣数据。一开始是使用的HtmlUnit来处理,但期间一直抛出拒绝访问提示但是从浏览器可以直接访问,我就换别的网站进行访问,别的网站能够正常抓取数据,期间也试过设置请求头,直到在调试时偶然抛出不一样的错误at script.M(https://challenges.cloudflare.com/turnstile/v0/g/d2a97f6b6ec9/api.js?onload=KHGO2&render=explicit:1)没截到图,搜了才发现该网站使用了cloudflare的人机检查,猜想HtmlUnit可能不是真正的请求,而是模拟的请求所以被cloudflare拦了下来。所以换了Selenium来处理

Selenium不能单独使用,需要和不同浏览器的Driver来配合使用,我使用的是ChromeDriver
1.下载Chrome和对应版本的ChromeDriver
Chrome版本和ChromeDriver版本要对手不让回抛出错误
我的chrome是126的版本

chromeDriver就也需要下载126版本 114及114之前的版本可以从这下载
http://chromedriver.storage.googleapis.com/index.html
最新版本需要到这下载
https://googlechromelabs.github.io/chrome-for-testing/
2.添加selenium依赖

3.访问页面
相关代码

还是抛出403 禁止访问
将selenium依赖升级到4.10 访问成功

标签:抛出,Selenium,ChromeDriver,访问,版本,cloudflare,页面
From: https://www.cnblogs.com/ZouTaoFen/p/18283950

相关文章

  • selenium14_POM设计模式
    Python+Selenium+Unittest+Git+Jenkins框架,POM设计模式1.common文件夹:二次封装原有方法的文件base.py;存放通过的文件,如:生成报告的文件2.pages文件夹:page元素的定位;调用前边的封装方法,或者继承,再次封装一些页面的操作方法:如输入用户名密码点击登陆等操作。(或者元素定位,操作......
  • selenium16_文件上传
    inupt标签可以直接通过send_keys上传文件非input标签,AutoIt上传1.安装AutoIt2.AutoIt菜单介绍SciTEScriptEditor编辑器,用于编写AutoIt脚本AutoItWindowsInfo元素定位器,用于识别Windows控件信息RunScript执行AutoIt脚本CompileScriptto.exe将AutoIt生成可执行文件......
  • selenium12_HTML测试报告(run_all)
    在run_all.py中编写如下脚本:#cording:utf-8importunittestimportosfromcommonimportHTMLTestRunner_cn#os.path.dirname:获取当前文件所在的文件夹路径。os.path.realpath(__file__):根据不同的系统自动获取绝对路径,包含文件名cur_path=os.path.dirname(os.p......
  • selenium13_二次封装
    classBase():def__init__(self,driver):self.driver=driverself.timeout=10self.t=0.5#查找元素的另一种方法:deffindElementNew(self,locator):#定位到元素,返回元素对象,没有定位到返回timeout异常ele=......
  • selenium07_select下拉框
    有以下2种方法定位下拉框: 方法一:最基本的元素定位方法,定位下拉框,再定位下拉框中的元素 方法二:fromselenium.webdriver.support.selectimportSelectel=driver.find_element_by_id("nr")  #先定位到下拉框Select(el).select_by_index(0)  #通过下拉框中元素的......
  • selenium08_鼠标事件、键盘事件
    1.鼠标事件需要导入:fromselenium.webdriver.common.action_chainsimportActionChains1)右击el=driver.find_element_by_id("kw")#定位元素ActionChains(driver).context_click(el).perform()#右击2)双击el= driver.find_element_by_xpath("//div[@id='qrcode�......
  • selenium09_3种等待
    1.time.sleep(2)进程休眠一次有效,一直等待,浪费时间time.sleep(2) 设置2s,等待2s 2.driver.implicitly_wait(10) 隐式等待原理:等当前页面加载完成1)最大等待时间10s2)全局的:脚本中只需写一次,脚本中所有元素定位的场景,都可用3)针对于当前页面的所有元素定位有效缺点:......
  • selenium10_单元测试框架unittest
    一、Python中单元测试框架:unittest框架和pytest框架。本篇记录unittest1.Unittest是通用的,可以做单元测试,接口测试,selenium自动化,app自动化2.需要导入unittest,类继承自unittest.TestCase。3.类名大驼峰;测试方法必须以test开头;测试用例的方法中,不能有参数。4.Pycharm中用un......
  • selenium11_js语法
    1.JS语法js中元素定位方法,如下5种方法:a.通过id获取,获取的是单个document.getElementById("id")b.通过name获取,获取的是多个document.getElementsByName("name")[0]c.通过标签名选取元素,获取的是多个document.getElementsByTagName("tag")d.通过CLASS类选取元素,获取的是多个......
  • selenium03_控制台调试xpath/css语法,代码执行jQuery
    1.控制台调试Xpath语法示例: 按F12,调出控制台Console,调试Xpath语法的格式:$x("xpath语法")。如:$x("//*[@id='kw']")    2.控制台调试css语法调试css语法的格式:$("css语法")。如:$("#kw")   3.代码执行jQueryjQuery是从css语法演变过来的,其实就是css,用到css语言......