本文主要是想说明一点: 在页面无跳转且可以保证xpath的值是对的(是指xpath是你复制来的,当然不是怀疑你写xpath的水平~)情况下,如果报错:Unable to find element with...正确的做法是先定位到相应的frame,再对那个页面里的元素进行定位。...import selenium.webdriver import time zuodao_url = r'https://www.zuodao.com/guest/index.html' zuodao_username...= "username" zuodao_password = "password" driver=selenium.webdriver.Edge(r'C:\ProgramData\Anaconda3...driver.switch_to.frame('alibaba-login-box') usr_xpath = '//*[@id="fm-login-id"]' time.sleep(1) driver.find_element_by_xpath
话不多说直接上代码 # 编写时间2021/6/8;19:57 # 编写 :刘钰琢 from selenium import webdriver import time from chaojiying...中间有很多插曲,比如说 找不到验证码区域 刚开始按照老师那个方法就是线截取全屏,之后在寻找那个验证码区域在进行二次截取 后来发现不太行,怎么该就是在左边左上角那一片区域 就看评论发现竟然可以直接截取验证码哪一个区域...,然后我就在出阿宝工具里边找到验证码区域的一个xpath位置 对他直接进行截取 code_img=bor.find_element_by_xpath('/html/body/div[2]/div[2]/...这一个代码既可以得到他的位置也可以直接通过他进行截屏处理,真的是太nice,就像下边一样 那么接下来的填写数据也就是顺理成章的事情了,简直不要太简单 就是最后12306可能是发现用的是selenium...登录的会给一个那个滑块去验证
想要让Selenium执行我们想要的操作,首先必须让Selenium识别需要操作的元素,就像人通过眼睛去识别一样,Selenium通过定位元素的方法去识别页面元素,可以通过ID、 name、class属性定位...,以及Xpth和CSS选择器定位,或者直接通过文本进行定位。...下面是Selenium提供的8种find_element_by 方法,用于定位页面元素。...(一组元素),不加的话就是返回一个元素,如果找不到元素就会抛出NoSuchElementException异常。...例如:淘宝首页这个标签,可以用div.promo 或 div.promo.J_Promo 或 div.promo.J_Promo.tb-loading
selenium定位元素的八大方法: 在开始登录前,咱们得先学习一下selenium定位元素的方法,不然找不到元素是没办法完成自动操作 <!...('test') #我们对比上面的html代码可以知道,id属性为‘test’的只有一个代码块,就是 find_element_by_name() 通过name属性来查找元素..."]/div/div[3]/div[2]/div/input) 可直接右键选中需要查找的元素,选择copy xpath即可复制到该元素的绝对路径 ?...("input[id="loginname"]") 更多find_element_by_css_selector()方法使用可点击此处查看 selenium定位复数方法: find_elements_by_id...,只是在element后加了s,是element的复数形式,可以查找满足条件的所有元素。
selenium定位元素的八大方法: 在开始登录前,咱们得先学习一下selenium定位元素的方法,不然找不到元素是没办法完成自动操作 <!...('test') #我们对比上面的html代码可以知道,id属性为‘test’的只有一个代码块,就是 2. find_element_by_name() 通过name...(//*[@id="pl_login_form"]/div/div[3]/div[2]/div/input) 可直接右键选中需要查找的元素,选择copy xpath即可复制到该元素的绝对路径 image.png..."]") 更多find_element_by_css_selector()使用方法可点击此处查看 selenium定位复数方法: find_elements_by_id() find_elements_by_name...自动登录微博 咱们先来定位微博登录的相关元素位置 用户名输入框 image.png 密码输入框 image.png 登录按钮 image.png from selenium import webdriver
a[title] 匹配属性有title的a标签 属性选择器—匹配单词边界 a[title~=“hello”] 匹配title包含hello的a标签 后代选择器(空格表示),可选取当前层级下的任意层级元素...匹配最后一个标签 3. xpath 与 css 的对比 4. xpath 与 css 更详细示例对比 直接子元素 XPATH 中的直接子元素是使用“/”定义的,而在 CSS 上,它是使用“>”定义的...第二个子元素 XPATH: //div[@id='u1']/a[2] CSS: div #u1 a:nth-child(2) 模糊匹配 selenium中允许使用 ^=,$= 或*=进行部分字符串匹配...drag_and_drop_by_offset(source, xoffset, yoffset) 拖拽到某个坐标然后松开 key_down(value, element=None) 按下某个键盘上的键...(element, *keys_to_send) 发送某个键到指定元素 2.2 键盘事件 selenium 常用键盘事件说明: #导入包 from selenium.webdriver.common.keys
Selenium简介 Selenium是一个用于web自动化测试的工具,Selenium测试直接运行在浏览器中,就好像一个真正的用户在操作一样。...我们可以利用它来模拟用户点击访问网站,绕过一些复杂的认证场景 通过selnium+驱动浏览器这种组合可以直接渲染解析js,绕过大部分的参数构造和反爬。...安装Selenium Selenium安装非常简单,直接pip就可以搞定: pip install selenium 使用selenium驱动chrome浏览器需要下载chromedriver,而且...') # 点击百度一下 browser.find_element_by_xpath('//input[@id="su"]').click() time.sleep(2) browser.close()...,有时候我们会遇到找不到元素的问题,明明定位的路径没问题,这个时候我们可以考虑一下是否是该页面存在frame的问题导致的定位不到元素。
1.介绍selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转...#//与/ # driver.find_element_by_xpath('//body/a') # 开头的//代表从整篇文档中寻找,body之后的/代表body的儿子,这一行找不到就会报错了...') #没有等待环节而直接查找,找不到则会报错print(contents)browser.close()显式等待from selenium import webdriverfrom selenium.webdriver...('#nav-search > form > div.nav-right > div > input')button.click()import timetime.sleep(3)input_tag=browser.find_element_by_id...frame相当于一个单独的网页,在父frame里是无法直接查看到子frame的元素的,必须switch_to_frame切到该frame下,才能进一步查找from selenium import webdriverfrom
selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了。 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的。...这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。滚动条是无法直接用定位工具来定位的。...selenium里面也没有直接的方法去控制滚动条,这时候只能借助J了,还好selenium提供了一个操作js的方法:execute_script(),可以直接执行js的脚本。...–scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。 –scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。...代码块 driver.find_element_by_xpath("//div[@id='search']/div/span/input").click() target = driver.find_element_by_id
搜索并采集结果的标题 需求如下: 打开百度搜索主页 在输入框输入搜索内容(比如"爬虫") 点击"百度一下"按钮,进行搜索 把结果页面中的第一页的各个结果的主标题抓取下来 Selenium 的麻烦之处 本系列始终围绕一点开展...pyppeteer 容易学一些 有一个 selenium-ide 工具,能够把手工操作过程直接转换为 selenium 的代码 缺点: 不同版本不同厂商的浏览器需要不同的驱动程序 无法精细控制请求过程的各种处理...,如下 无法在执行网站 js 代码之前,执行自己的 js 代码 无法在登录阶段控制浏览器让人工登录获得 cookies,后续直接请求获得数据 如果你认为无法接受 selenium 的缺点,可以查看 pyppeteer...他的意思是,他找不到"浏览器驱动" 的确,刚刚我们把驱动下载下来,但是 Python 怎么可能会知道去哪里找到那个驱动程序呢。...= wd.find_element_by_css_selector('#kw') input_box.send_keys('爬虫') #百度一下按钮 act_btn = wd.find_element_by_css_selector
Python爬虫入门之 Selenium自动化爬虫 Selenium官方文档 1. Selenium的安装配置 pip install selenium selenium配置 2....隐式等待 和 显式等待 在使用Selenium访问网页的过程中,有时候需要等待网页的加载,所以有时候就需要延时等待一定的实践,确保网页里你需要的内容都加载出来。...7.1 隐式等待 当使用隐式等待执行测试的时候,如果 Selenium 没有在 DOM 中找到节点,将继续等待,超出设定时间后,则抛出找不到节点的异常。...('//*[@id="wrap"]/div[4]/div/div/div[1]/form/div[2]/p/input').send_keys('Python') # 点击搜索 browser.find_element_by_xpath...无头模式 如果你觉得每次运行代码弹出来的浏览器窗口太烦人,那么不妨试一下Selenium的无头模式,即不会弹出浏览器窗口。
, 打开开发者模式(按下f12),进入网络(network),并输入登陆账号密码 2)找到相应的文件,查看“请求标头” 运行结果: 二、利用from data的数据提交账号密码 1、先登陆然后找到登陆响应页面的...network)里面的login文件并点击,找到负载(或者往下拉找到 from data) 3)把你的账号密码copy到代码里面来 运行结果: 三、Selenium模拟登陆 模拟人工输入账号、密码...(2) #获取登陆模块的iframe el_path = driver.find_element_by_xpath('/html/body/div[4]/div/div/iframe') #进去该iframe...iframe框架(可以在页面元素中ctrl+f输入iframe或frame搜索),不然找不到元素,操作不了。...4、XPath路径可以直接复制网页里面的
今天我们来一点不一样的,直接使用selenium获取经纬度! 我们先进百度地图开放平台,进去之后不需要登录,找到开发文档,然后找到工具支持,最后找到坐标拾取器,如图所示。 ?...具体怎么使用可以看看右边的官方教程,下面我直接以获取上海市所有公司(其实也不是所有,因为可能有些公司百度地图没有收录)的经纬度为例,来讲解一下不通过百度地图API从百度地图获取经纬度的过程。...在使用修饰符S的情况下,下面我直接给出最终的正则表达式:r'\s+.*?...from selenium.common.exceptions import NoSuchElementException # 当找不到元素时会引发NoSuchElementException异常,...browser.find_element_by_id("localsearch").click() # 点击百度一下进行搜索 pattern = compile(r'<div id="
安装完毕之后,可以愉快的写测试脚本了。 还有一个非常重要的东西就是浏览器的驱动,使用selenium打开浏览器没有驱动的话,会报错的。...from selenium import webdriver from selenium.webdriver.support.select import Select import time import...# 睡眠,不然找不到下一个元素 time.sleep(3) # 继续一些操作,寻找流程申请 self.driver.find_element_by_xpath...("//div[@id='left-nav']/aside/ul/li[3]").click() # 睡眠,不然找不到下一个元素 time.sleep(1...time.sleep(3) self.driver.find_element_by_xpath("//div[@class='modal-footer']/button[1]")
,下载到本地,放在工程路径下即可。...回车点击后跳转到“python爬虫”商品页,可以查看到返回的商品列表,如图所示: 在商品列表页中通过开发者工具可以查看“python爬虫”商品的基本信息,可以看到每个商品都位于li标签中,li...进一步分析,可以看到商品列表页,,如商品链接,商品名称,商品价格,商品评论人数等信息,如图所示: 通过开发者工具可以看出,商品链接位于li标签中a标签的href属性中。...商品名称位于class属性为p-name的div标签下得em标签中,并有换行。商品价格信息位于class属性为p-price的div标签中的i标签中,由于图片大小问题,没有展开显示。...商品评论人数信息位于class属性为p-commit的a标签中,由于图片大小问题,没有展开显示。
frame, # 所以这里需要选中一下说说所在的frame,否则找不到下面需要的网页元素 driver.switch_to.frame("app_canvas_frame...[3]') 所有的注释都在代码中,所以也就不作详情说明, 昨天的模拟登录大家都应该掌握了,没有掌握的自己再去复习一下 .Python爬虫:学习Selenium并使用Selenium模拟登录知乎 爬取说说的完整代码...() # 浏览器地址定向为qq登陆页面 driver.get("http://i.qq.com") # 所以这里需要选中一下frame,否则找不到下面需要的网页元素 driver.switch_to.frame...frame, # 所以这里需要选中一下说说所在的frame,否则找不到下面需要的网页元素 driver.switch_to.frame("app_canvas_frame...,因为下一页的按钮是动态变化的,这里需要动态记录一下 driver.find_element_by_id('pager_next_' + str(next_num)).click()
1.3 利用 Selenium 获取元素 通过 Selenium 调用 find_element_by_name() 或 find_element_by_path() 函数定位 163 邮箱登录用户名和密码对应的元素...可以看到,位于 位置。 ?...每条微博信息都位于 ......3.2.3 定位用户名 位于节点 ... 下的第一个超链接,其对应源码如下图所示: ?...特别注意的是,在短时间内爬取海量数据时,有些网站的反爬虫技术会检测到你的爬虫,并封锁你当前的 IP,比如微博或者淘宝等,这就需要通过IP代理来实现。当然,更多实际情况下的应用还需进行深入研究分析。
一 介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,...#//与/ # driver.find_element_by_xpath('//body/a') # 开头的//代表从整篇文档中寻找,body之后的/代表body的儿子,这一行找不到就会报错了...('content_left') #没有等待环节而直接查找,找不到则会报错 print(contents) browser.close() from selenium import webdriver...') button=browser.find_element_by_css_selector('#nav-search > form > div.nav-right > div > input') button.click...,在父frame里是无法直接查看到子frame的元素的,必须switch_to_frame切到该frame下,才能进一步查找 from selenium import webdriver from selenium.webdriver
领取专属 10元无门槛券
手把手带您无忧上云