首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 爬虫之Selenium终极绝招

遇到动态渲染的问题时,如果无法提取ajax接口,或者无法破解token值计算,那我们只能使用终极绝招,Selenium测试框架。只是它性能低,不适合服务器部署,但活人不能让尿憋死,这是无奈的选择。...动态渲染之后的网页,然后再使用我们之前介绍过的bs4来解析元素 1 import cookie_handle as ch 2 from selenium.webdriver.chrome.options...我们可以通过抓包,将已经登录的Cookies 字符串复制出来,然后使用以下方法将Cookies解析成selenium需要的格式 1 def getCookies(text): 2 result =...,在一个页面对象进行访问操作的时候还有两个非常有用的私有方法:find_element和find_elements 代码示例: 1 from selenium.webdriver.common.by import...,使用我们第一章的方法无法爬取该网站的图片,大家可以使用本章学习的内容尝试爬取该网站。

1.3K30

自动化测试——selenium(环境部署和元素定位篇)

> 一个web自动化测试工具; 二、主流的自动化工具: > QTP:收费 支持(支持web、桌面软件自动化) > selenium:免费,开源 只支持web项目 > Robot frameword...) 6、partial_link_text(定位超链接 a 标签 包含关系) 7、xpath (路径) 8、css (元素选择器) 注意:这是 selenium 框架中提供的八大元素定位方法,只要能够定位目标元素...说明:1、我们可以获取列表下标获取对应的目标元素 2、其他元素定位方法也可以实行定义一组元素 3、使用标签名定位操作 # 语法 driver.find_elements_by_xxx """ id...列表定位 """ # 导包 from time import sleep from selenium import webdriver # 实例化浏览器对象 driver = webdriver.Chrome...控制元素的显示样式,就必须先找到元素,在css标记语言中找元素使用css选择器; 3、css的选择策略也有很多,但是无论选择哪一种选择策略都是用的同一种定位方法 # 方法: driver.find_element_by_css_selector

1.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Selenium3元素定位详解与封装

    可以使用的方法为find_element_by_link_text,比如在百度首先我们需要点击新闻,那么就可以使用方法来进行定位了一般而言在a标签里面的,我们都可以理解为超链接,就可以使用该方法来进行具体的操作了...,那么把它可以理解为也是针对超链接的定位方式,不过它可以使用模糊匹配的原则,这个怎么理解了,比如点击新闻,我们只可以使用一个关键字“闻”,下面还是点击新闻的超链接,但是使用模糊的方式,测试代码如下: #...,还有一种是我们需要索引的方式来解决。...,具体如下所示: 针对这种不是唯一的,我们可以使用多个元素定位的方式来解决,其实多个元素定位的核心思想是获取到的元素属性是一个列表,我们可以使用列表的索引来进行定位,比如针对标签的方法就是find_elements_by_tag_name...(),当然其他的方法其实都是一样的,这里我们先获取到它的属性,然后输出,就可以看到它的数据是列表,具体案例代码如下: #!

    93720

    九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、鼠标操作)

    本文主要介绍Selenium Python API技术,它以一种非常直观的方式来访问Selenium WebDriver的所有功能,包括定位元素、自动操作键盘鼠标、提交页面表单、抓取所需信息等。...通过Selenium Python API,读者能够以一种直观的方式来访问Selenium WebDriver的所有功能。...Selenium WebDriver API接口提供了一种定位网页中元素(Locate Elements)的策略,本书将使用Selenium Python讲解网络数据爬取知识,本章主要介绍Selenium...---- 三.定位元素 Selenium Python提供了一种用于定位元素(Locate Elements)的策略,你可以根据所爬取网页的HTML结构选择最适合的方案,表8.2是Selenium提供的各种方法...---- 4.通过连接文本定位超链接 当你需要定位一个锚点标签内的链接文本(Link Text)时就可以使用该方法。该方法将返回第一个匹配这个链接文本值的元素。

    4.8K10

    web自动化测试入门篇03——selenium使用教程

    我们以百度首页为例,可以看到该页面中有很多的超链接标签,如果我们想模拟点击跳转至新闻对应页面的操作,就可以用link text的元素定位方法来进行实现。 使用超链接标签对中的“新闻”一词来进行定位。...')sleep(2)ele.submit() 下拉列表,我们就可以使用Select方法来实现选取操作 使用Select方法需要从selenium.webdriver.support.select导入该方法...例如下图中某网站的下拉列表对象 html构造如下 select_by_index()方法from selenium import webdriverfrom selenium.webdriver.common.by...注意点与小技巧 对于某些动态div标签(窗口),一般的方法不太奏效的情况下,可以尝试下switch_to_default_content()方法,跳转到最外层; 使用模拟键鼠操作的时候,无论是单独使用还是链式写法...)方法吧; 抓不到元素可以使用延时方法,输入文字也是一样的道理,业务场景中需要大量输入文字的,无论是从文件中还是提取又或者是遍历,出现少字漏字的话,同样也可以使用延时的方法,适当的放慢处理的速度;

    2.8K30

    十.网络爬虫之Selenium爬取在线百科知识万字详解(NLP语料构造必备)

    互动百科的信息分为两种形式存储,一种是百科中结构化的信息盒,另一种是百科正文的自由文本。对于百科中的词条文章来说,只有少数词条含有结构化信息盒,但所有词条均含有自由文本。...注意:使用dt、dd最外层必须使用dl包裹,标签定义了定义列表(Definition List),标签定义列表中的项目,标签描述列表中的项目,此组合标签叫做表格标签,...进行爬取的,调用方法如下: webdriver.PhantomJS(executable_path="C:\......1.网页分析 第一个实例作者将详细讲解Selenium爬取20国家集团(G20)的第一段摘要信息,具体步骤如下: (1) 从G20列表页面中获取各国超链接 20国集团列表网址如下,Wikipedia采用国家英文单词首写字母进行排序...不同于Wikipedia先爬取词条列表超链接再爬取所需信息、百度百科输入词条进入相关页面再进行定向爬取,互动百科采用的方法是: 设置不同词条的网页url,再去到该词条的详细界面进行信息爬取 由于互动百科搜索不同词条对应的超链接是存在一定规律的

    1.7K20

    (数据科学学习手札50)基于Python的网络数据采集-selenium篇(上)

    findAll()方法提取需要的内容,利用正则表达式来完成精确提取 | 存入数据库   而本文将要介绍的一种新的网络数据采集工具就不再是伪装成浏览器端,而是基于自动化测试工具selenium来结合对应浏览器的驱动程序...,我们要检验一下我们的环境有没有正确搭建完成,在你的Python编辑器中,写下如下语句: from selenium import webdriver '''创建一个新的Chrome浏览器窗体'''...  可以看出,利用selenium来进行网络数据采集与之前的方法最大的不同点在于对目标网页发起请求的过程,在使用selenium时,我们无需再伪装浏览器,且有了非常丰富的浏览器动作可以设置,譬如说之前我们需要对页面进行翻页操作...,主要是通过修改url中对应控制页面值的参数来完成,所以在遇到JS控制的动态网页时,可以不需要去费心寻找控制对应资源翻页的真实url地址,只需要在selenium中,通过其内置的丰富的定位方法对页面中的翻页按钮进行定位...); 另一种思路:   除了使用ChromeOptions()中的方法来设置,还有一种简单直接粗暴的方法,我们可以直接访问对应当前浏览器设置页面的地址:chrome://settings/content

    1.8K50

    「Python爬虫系列讲解」八、Selenium 技术

    本文主要介绍 Selenium Python API 技术,它以一种非常直观的方式来访问 Selenium WebDriver 的所有功能,包括定位元素、自动操作键盘鼠标、提交页面表单、抓取所需信息等。...通过 Selenium Python API,用户可以以一种直观的方式来访问 Selenium WebDriver 的所有功能。...3 定位元素 Selenium Python 提供了一种用于定位元素(Locate Element)的策略,用户可以根据所爬取网页的 HTML 结构选择最合适的方案。...当定位多个元素时,只需将方法 “element” 加 “s” ,这些元素将会以一个列表的形式返回。...,因此可以通过定位其 HTML 源码中的超链接,或者给 switch_to_window() 方法传递一个 “窗口句柄” 来实现。

    7.3K20

    每周学点测试小知识-WebDriver页面操作

    控制浏览器 WebDriver主要是提供web页面元素的各种方法,但是它也提供了一些浏览器的操作方法。...eld_bt = driver.find_element_by_id("su") #点击一下按钮 eld_bt.click() 超链接: 对于页面的超链接,一般也只有点击操作,WebDriver提供了...click方法来完成操作: #定位“新闻”超链接 ele_Link = driver.find_element_by_link_text("新闻") #点击该超链接 ele_Link.click()...: 对于页面上的下拉列表,WebDriver提供了Select类进行处理,它提供了select_by_index函数以index属性值来查找匹配的元素并选择;select_by_value函数以value...#导入Select模块 from selenium.webdriver.support.ui import Select #定位下拉列表 eleS = Select(driver.find_element_by_id

    1.4K20

    web自动化测试进阶篇04 ——— 异步通信与动态内容捕捉

    Ajax (Asynchronous JavaScript and XML),简单来说就是通过JavaScript和XMLHttpRequest对象,可以在不重新加载整个页面的情况下,通过后台请求获取数据并更新页面内容的一种技术...那么针对页面中的Ajaxy异步通信,显然我们使用传统的页面加载代码是肯定无法满足业务场景的需求,那么我们就可以利用selenium中的显式等待方法来针对异步通信加载元素的要求。   ...动态内容   动态内容与前面说的Ajax异步通信又有所不同,通俗的来说,动态内容不单单可以通过Ajax请求去获得,也可以是用户在页面中进行业务操作交互后产生的新的数据。...动态元素的定位我们一般不使用find_element方法,而是使用find_elements,具体请看如下的例子: # 获取动态元素列表 elements = driver.find_elements(...,其实还有很多很多的前后端技术可以来控制页面中的元素动态产生与显式,这里展示的处理方法只是最基础的方式,更多的复杂场景与高效处理方式还需要大家在工作中有意识的多多踩坑与积累。

    31240

    web自动化测试进阶篇04 ——— 异步通信与动态内容捕捉

    Ajax (Asynchronous JavaScript and XML),简单来说就是通过JavaScript和XMLHttpRequest对象,可以在不重新加载整个页面的情况下,通过后台请求获取数据并更新页面内容的一种技术...那么针对页面中的Ajaxy异步通信,显然我们使用传统的页面加载代码是肯定无法满足业务场景的需求,那么我们就可以利用selenium中的显式等待方法来针对异步通信加载元素的要求。   ...动态内容   动态内容与前面说的Ajax异步通信又有所不同,通俗的来说,动态内容不单单可以通过Ajax请求去获得,也可以是用户在页面中进行业务操作交互后产生的新的数据。...动态元素的定位我们一般不使用find_element方法,而是使用find_elements,具体请看如下的例子: # 获取动态元素列表 elements = driver.find_elements(...,其实还有很多很多的前后端技术可以来控制页面中的元素动态产生与显式,这里展示的处理方法只是最基础的方式,更多的复杂场景与高效处理方式还需要大家在工作中有意识的多多踩坑与积累。

    21020

    python 爬虫之selenium可视化爬虫

    selenium爬虫主要是模拟人的点击操作 selenium驱动浏览器并进行操作的过程是可以观察到的 就类似于你在看着别人在帮你操纵你的电脑,类似于别人远程使用你的电脑 当然了,selenium也有无界面模式...Selenium的核心Selenium Core基于JsUnit, 完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。...用python写爬虫的时候,主要用的是selenium的Webdriver, #安装selenium库 pip install selenium #安装对应浏览器驱动 # 我们可以通过下面的方式先看看Selenium.Webdriver...此时就需要设置等待(等待网页加载完成) selenium有两种等待方式: 显式等待 隐式等待 1.显式等待 显式等待是一种条件触发式等待 直到设置的某一条件达成时才会继续执行 可以设置超时时间...使用方法 from selenium import webdriver drive = webdriver.Chrome() url = 'http://www.baidu.com/' #设置最大等待时长

    2K61

    浩若烟海事半功倍|利用Docker容器技术构建自动化分布式web测试集群Selenium Grid

    ,这是电影《卡萨布拉卡》中的一句著名独白,投射到现实生活中,与之类似的情况不胜枚举,这世界上有那么多的系统,系统中有那么多的浏览器,在只有一台测试机的前提下,难道我们只能排队一个一个地做兼容性测试吗?...有没有效率更高的方法呢?为此我们提出一个更高效的解决方案:使用Docker+Selenium Grid。    ...    可以看到,两款浏览器的服务都已经正常启动,分别运行四个和两个实例,同时也可以在终端运行Docker命令来查看进程: docker ps     返回容器列表: liuyue:mytornado...:     差别不大,但是可以通过实际测试看出细节的差异,比如字体和超链接颜色的不同,这些都是兼容性测试中的常备部分。    ...通过使用这种自动化测试方法,我们可以节省大量时间,并以高效的方式获得最准确的测试结果。如果您现有测试机的配置更加优秀,还可以进一步探索,尽可能多的开启浏览器实例,以此做到海量并发兼容性测试。

    1K20

    彻底学会Selenium元素定位

    只能使用精准匹配(即a标签的全部文本内容),该方法只针对超链接元素(a 标签),并且需要输入超链接的全部文本信息。...(不仅可以解析XML还可以解析HTML,因为HTML与XML是非常相像的,XML多用于传输和存储数据,侧重于数据,HTML多用于显示数据并关注数据的外观) Xpath策略有多种,无论使用哪一种策略,定位的方法都是同一个...CSS的选择策略也多很多种,但是无论选择哪一种选择策略都是用同一种定位方法。...在实际企业项目中,可能需要前端同学的配合,保证元素唯一属性命名规则。...tag_name使用频率最低 尽量不要用href属性、纯数字的属性(纯数字可能是个动态值)去定位 对于Toast提示框,很快消失的提示框,可以点击 开发者工具-sources中的暂停键 后再去定位

    7.2K32

    「Python爬虫系列讲解」十二、基于图片爬取的 Selenium 爬虫

    Selenium 博客爬虫 「Python爬虫系列讲解」十一、基于登录分析的 Selenium 微博爬虫 ---- 目录 1 图片爬虫框架 2 图片网站分析 2.1 图片爬取方法 2.1.1 urlretrieve...第一部分,定义主函数循环获取图片的主题名称和图片性详细页面的超链接,调用 Selenium 进行 DOM 树分析,利用 find_elements_by_xpath() 函数定位元素。...各种图片爬虫之间是存在区别的,常见的区别如下: 为了提高爬虫效率,修改为分布式或多线程爬虫; 为了规整图片格式,采用自定义的方式命名图片; 为了获取动态加载的图片,采用动态页面分析技术进行爬取。... 列表节点布局。 ?...本文利用 Selenium 技术爬取网站图集,其分析和定位方法与爬取文本的方法一样,不同之处在于,当定位得到了图片的 URL 时,还需要利用图片爬取方法来下载每一张图片,常见的爬取方法有 urlretrieve

    2.8K30

    web自动化测试入门篇02——selenium安装教程

    接上一篇文章,我们将继续深入探讨Selenium的相关使用方法与技巧。2....3.1.2 IDE方式  第二种是使用各类IDE进行selenium的安装,这里主要介绍主流的IDE-Pycharm内的安装方法。...接下来选择File → Setting在Project:XXX (XXX是你的项目名)中选择Python Interpreter等待右侧的列表加载完成之后点击左上方的加号在可使用的包列表界面中,搜索selenium...同样的,首先新建一个项目,File → New → Project…选择创建Maven项目添加完项目之后,这里有两种添加方式,第一种通过maven仓库地址进行自动导包。...等待后台下载任务结束后,对应的设置才会生效,我们可以在maven project窗口内查看对应的selenium。 3.2.2 项目配置方式另外一种则是从官网下载jar包进行IDE内的项目模块的配置。

    5.3K21

    ​Java自动化测试 (元素定位 23)

    ,会存在不唯一性,注意复合类名的问题 linkText 根据超链接的全部文本值来获取元素 partialLinkText 根据超链接的部分文本值来获取元素(模糊匹配) 代码封装 之后的例子都会使用到open...Xpath定位 Xpath定位有很多的优势 没有id可以进行定位 需要定位多个符合要求的元素 使用脚本断点调试定位是否正确是一个方法,当时在我的实际工作中,元素定位代码的封装较深,所以修改查询元素的内容较麻烦...下面是使用它的方法: 元素定位 使用浏览器自带的定位工具进行元素的定位 ? 元素定位 初步获取Xpath ?...假如我们需要获取的是一个元素的列表,那就可以进行删减 将它删减为://*[@id="dashboard"]/div/div[3]/div//a可以发现页面中标黄的都是定位到的部分内容,「RESULTS(...定位元素列表 ?

    1.1K30
    领券