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

Python 自动化指南(繁琐工作自动化)第二版:十二、网络爬取

然后这个帖子还会有一个“上一”按钮,以此类推,创建一个从最近的页面到站点上第一个帖子的轨迹。如果你想要一份网站内容的拷贝,以便在不在线阅读,你可以手动浏览每一并保存每一。...元素位于元素内部。 Prev 按钮有一个为prev的rel HTML 属性。 第一个漫画的“上一”按钮链接到xkcd.com网址,表示没有更多的上一。...如果面上不存在与该方法所寻找的相匹配的元素selenium模块会引发一个NoSuchElement异常。如果你不希望这个异常使你的程序崩溃,在你的代码中添加tryexcept语句。...is_enabled() 对于输入元素如果元素被启用,返回True;否则返回False is_selected() 对于复选框或单选按钮元素如果元素被选中,返回True;否则返回False...在这个页面上,我们试图找到类名为'bookcover'的元素如果找到这样的元素,我们使用tag_name属性打印它的标签名。如果没有找到这样的元素,我们打印一条不同的消息。

8.7K70

Selenium之操作浏览器、元素等待、窗体切换弹窗处理

(name): 获得属性 is_displayed(): 获取该元素是否用户可见 is_enabled(): 判断元素是否可用 is_selected(): 判断元素是否被选中...WebDriver提供了两种类型的等待:显示等待隐式等待 显示等待: 显示等待使WebDriver等待某个条件成立时继续执行,否则在达到最大时长抛出超时异常(TimeoutException...举个例子,如果面上有n个元素的class都是'column-md-3',那么只要有1个元素存在,这个方法就返回True text_to_be_present_in_element : 判断某个元素中的...: 判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去,否则返回False invisibility_of_element_located : 判断某个元素中是否不存在于...用法:driver.switch_to_frame(element) 2、有时候点某个链接,会跳转到一个新的签,这个时候需要切换到新打开的签中才能继续操作。

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

Selenium Python使用技巧(三)

书接上文上上文: Selenium Python使用技巧(一) Selenium Python使用技巧(二) 处理不同情况的等待 在Selenium自动化测试中网页可能需要花费一些时间来加载,或者希望在触发测试代码之前可以看到页面上的特定...Selenium具有WebDriverWait,可以将其应用于任何具有条件持续时间的Web元素如果不存在执行等待的元素或发生超时,则可能引发异常。...在下面的示例中,我们等待link_text=Sitemap加载到页面上,并在WebDriverWait方法中指定了超时。如果在超时时间内未加载该元素抛出异常。...使用Selenium放大和缩小 为了在进行Selenium自动化测试放大或缩小,应使用transformCSS属性(适用于相应的浏览器),该属性可让您在页面上执行放大,缩小,旋转,倾斜等操作。...您必须首先通过ID搜索元素,然后使用.location属性来计算搜索到的元素的XY坐标。

1.7K30

Selenium必须掌握的元素定位方法

接下来就来讲一下如何使用webdriver提供的基本元素定位方法。 再次声明:本站点已经百度、必应、谷歌等各大搜索引擎达成长期的战略合作协议,你有任何疑问都可以通过以上公司提供的免费服务得到解答。...但是有的时候iframe/frame没有可用的idname属性,那么这时候我们可以根据以下方式进行元素定位: #www.testclass.cn #Altumn #2018-11-5 from selenium...如果把鼠标从”搜索设置”上面移开,你会发现display属性none,它所在的整个 标签就是因为这个属性的变化而隐藏的。如下所示,把鼠标从”搜索设置”上面移开: ?...如果统计结果是0,说明你的定位方法找不到任何元素元素本身不存在如果大于1,说明你这种定位方法不是唯一的。那么就需要把元素打印出来,查看第几个是你所需要的元素: ?...在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到抛出异常。

4.6K20

Selenium自动化测试-设置元素等待

WebDriverWait一般until()until_not()配合使用: until() 当某元素出现或什么条件成立继续执行 until_not 当某元素消失或什么条件不成立继续执 WebDriverWait...举例:如果面上有 n 个元素的 class 都是’qw’,那么只要有 1 个元素存在,这个方法就返回 True text_to_be_present_in_element 判断某个元素中的 text...判断该 frame 是否可以 switch进去,如果可以的话,返回 True 并且 switch 进去,否则返回 False invisibility_of_element_located 判断某个元素中是否不存在于...这个方法为例,看下WebDriverWait怎么expected_conditions配合使用。...: 元素等待方式 优点 缺点 time 使用简单,在程序调试使用 浪费不必要的等待时间,影响用例执行效率 implicitly_wait 一旦设置,这个隐式等待会在WebDriver对象实例的整个生命周期起作用

1.7K10

web自动化之selenium的特殊用法汇总篇

(2)组合键使用 (4)常用组合键 (5)常用功能键 2、Python-Selenium:如何通过click在新的标签打开链接?...如果具有该名称的属性不存在返回具有相同名称的属性的如果没有这个名称的属性,返回' None '。...For attributes or properties which do not exist, None is returned. 被认为为真值的,即等于“真”或“假”的,将作为布尔返回。...所有其他非' None '将作为字符串返回。 对于不存在的属性或属性,将返回' None '。...() 3、selenium 带有空格的class name且不唯一的元素定位 有些class属性中间有空格,如果直接复制过来定位是会报错的InvalidSelectorException: Message

2.4K30

Selenium自动化测试-设置元素等待

WebDriverWait一般until()until_not()配合使用: until() 当某元素出现或什么条件成立继续执行 until_not 当某元素消失或什么条件不成立继续执 WebDriverWait...举例:如果面上有 n 个元素的 class 都是’qw’,那么只要有 1 个元素存在,这个方法就返回 True text_to_be_present_in_element 判断某个元素中的 text...判断该 frame 是否可以 switch进去,如果可以的话,返回 True 并且 switch 进去,否则返回 False invisibility_of_element_located 判断某个元素中是否不存在于...这个方法为例,看下WebDriverWait怎么expected_conditions配合使用。...: 元素等待方式 优点 缺点 time 使用简单,在程序调试使用 浪费不必要的等待时间,影响用例执行效率 implicitly_wait 一旦设置,这个隐式等待会在WebDriver对象实例的整个生命周期起作用

1.5K20

不懂PO 设计模式?这篇实战文带你搞定 PO

为UI页面写测试用例(比如web页面,移动端页面),测试用例会存在大量元素操作细节。当UI变化时,测试用例也要跟着变化, PageObject 很好的解决了这个问题!...使用UI自动化测试工具(包括selenium,appium等),如果无统一模式进行规范,随着用例的增多会变得难以维护,而 PageObject 让自动化脚本井井有序,将 page 单独维护并封装细节,...因此,如果要访问一个文本字段,page object应该有获取返回字符串的方法。page object应该封装对数据的操作细节,比如查找元素点击元素。...内的元素有多少并不关⼼,隐藏内部界⾯控件 • 登录成功失败会分别返回不同的⾯ – findPassword – loginSuccess – loginFail • 通过⽅法返回判断登录是否符合预期...__(self, driver: WebDriver = None): #此处对driver进行复用,如果不存在driver,就构造一个新的 if driver is None

84210

【python自动化】playwright长截图&切换标签&JS注入实战

该方法会截取页面的屏幕截图,并根据该特定元素的大小位置进行裁剪。 如果元素被其他元素覆盖,则在截图上实际上不可见。 如果元素是可滚动容器,截图上只会显示当前滚动的内容。...如果path是相对路径,相对于当前工作目录解析。如果不提供路径,图像将不会保存到磁盘。 quality Union[int, None] 图像的质量,介于0到100之间。不适用于png图像。...Locator类下的截图 该方法将截取页面的屏幕截图,并根据定位符匹配的特定元素的大小位置进行裁剪。 如果元素被其他元素覆盖,则在截图上实际上不可见。...如果元素是可滚动容器,截图上只会显示当前滚动的内容。 该方法会等待可操作性检查,然后将元素滚动到视图中,然后再进行截图。 如果元素已从 DOM 中移除,该方法会抛出一个错误。...实际上有时候浏览器还是停留在当前页面,并没有自己切到新页面,这时候就需要切换到新的标签进行元素定位等相关操作。 selenium切换标签selenium是通过handles句柄的方式进行切换。

2.1K20

爬虫相关

爬虫常用库 requests、selenium、puppeteer,beautifulsoup4、pyquery、pymysql、pymongo、redis、lxmlscrapy框架 其中发起请求课可以使用...requestsscrapy 解析内容可以用 beautifulsoup4,lxml,pyquery 存储内容可以使用 mysql(清洗后的数据) redis(代理池) mongodb(未清洗的数据)...抓取动态渲染的内容可以使用:selenium,puppeteer 增量爬虫 一个网站,本来一共有10,过段时间之后变成了100。...但是,由于python使用GIL(全局解释器锁,保证同时只有一个线程在使用解释器),这极大限制了并行性,在处理运算密集型程序的时候,Python的多线程效果很差,而如果开多个线程进行耗时的IO操作,Python...• 蜘蛛中间件(SpiderMiddlewares),介于Scrapy引擎蜘蛛之间的钩子框架,主要工作是处理蜘蛛的响应输入请求输出

1.1K20

Selenium面试题

没有提供原生的方法判断元素是否存在,一般我们可以通过定位元素+异常捕获的方式判断 NO.7 selenium中hidden或者是display = none元素是否可以定位到?...所以有的时候,当selenium并未加载完一个页面再请求页面资源,则会误报不存在元素。所以首先我们应该考虑判断,selenium是否加载完此页面。其次再通过函数查找该元素。...NO.16 如何在定位元素后高亮元素(以调试为目的)? 重置元素属性,给定位的元素加背景、边框 NO.17 XPath中使用单斜杠双斜杠有什么区别?...如果没有与页面上元素相关联的名称/ ID,或者名称/ ID的一部分是常量,必须使用XPath。...假如一个文本框是一个Ajax控件,当我们输入一些文本,它会显示自动建议的。 处理这样的控件,需要在文本框中输入之后,捕获字符串中的所有建议;然后,分割字符串,取值就好了。

5.7K30

Selenium自动化|爬取公众号全部文章,就是这么简单

Selenium介绍 Selenium是一个用于web应用程序自动化测试的工具,直接运行在浏览器当中,可以通过代码控制与页面上元素进行交互,并获取对应的信息。...但如果直接使用Requests等库直接请求,会涉及的反爬措施有cookie设置,js加密等等,所以今天就利用Selenium大法!...Selenium请求网页等待响应受到网速牵制,如果元素未加载全而代码执行过快就会意外报错而终止,解决方式是等待。...因此从这里开始,代码的执行逻辑为: 先遍历前10100个文章的公众号名字,如果不是“早起Python”跳过,是获取对应的标题名字、发布日期链接 第10遍历完成后自动点击登录,此时人为扫码确定登录...然后就是重新遍历文章了,由于不知道最后一是第几页可以使用while循环反复调用解析页面的函数半点击“下一”,如果不存在下一结束循环 while True: get_news()

2.3K20

selenium 的显示等待与隐式等待

的页面等待问题 ,动态加载的页面需要时间等待页面上的所有元素都渲染完成,如果在没有渲染完成之前我们就switch_to_或者是find_elements_by_,那么就可能出现元素定位困难而且会提高产生...selenium的页面等待有显示等待隐式等待 隐式等待 比较简单,提供一个等待时间,单位为秒,等这个时间过去在去做其他操作。...举个例子,如果面上有n个元素的class都是'column-md-3',那么只要有1个元素存在,这个方法就返回True text_to_be_present_in_element:判断某个元素中的text...:判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去,否则返回False invisibility_of_element_located:判断某个元素中是否不存在于...).until( EC.条件实现((By类定位方式, 定位), message)) }finally{ // } 另外使用selenium会打开浏览器自动加载页面,我们需要安装用来自动化测试浏览器的插件来完成

3.5K40

解读selenium webdriver

如果你的网站打开了一个新的标签或窗口,Selenium会让你使用一个窗口句柄来处理它。每个窗口都有一个唯一的标识符,它在一个会话中保持不变。你可以通过使用以下方法获得当前窗口的窗口句柄。...您不需要切换就可以使用新窗口(或)标签如果你有两个以上的窗口(或)标签被打开,而不是新窗口,你可以在WebDriver可以看到的两个窗口或标签上循环,并切换到不是原来的那个窗口或标签。...当你完成一个窗口或标签的操作,并且它不是浏览器中最后一个打开的窗口或标签,你应该关闭它,并切换回之前使用的窗口。...用户可以配置等待以在等待忽略特定类型的异常,例如在页面上搜索元素忽略NoSuchElementException。...当设置为noneSelenium WebDriver只等待下载初始页面。

6.6K30

自动化测试实战 | 搞定 PageObject 设计模式

PageObject 简介 在为 UI 页面写测试用例(比如 Web 页面,移动端页面),测试用例会存在大量元素操作细节。如何面对当 UI 变化时,测试用例也要跟着变化这个问题?...使用 UI 自动化测试工具Selenium、Appium 等),如果无统一模式进行规范,随着用例的增多会变得难以维护,而 PageObject 让自动化脚本井井有序,将 page 单独维护并封装细节...因此,如果要访问一个文本字段,Page Object 应该有获取返回字符串的方法。Page Object 应该封装对数据的操作细节,比如查找元素点击元素。...⼼,隐藏内部界⾯控件 登录成功失败会分别返回不同的⾯ findPassword loginSuccess loginFail 通过⽅法返回判断登录是否符合预期 UML 图 [watermark,type_ZmFuZ3poZW5naGVpdGk...class BasePage: def __init__(self, driver: WebDriver = None): #此处对driver进行复用,如果不存在driver

1.6K30

《手把手带你学爬虫──初级篇》第5课 Selenium WebDriver的用法

(session="bb336a8045d9536ef7b79e16d5a78637", element="0.6577164491799441-1")> 注意:使用xpath来进行寻找页面元素如果面上有多个元素...('n') # 点击元素,我们发现竟然回到了第一,那是因为,当前非第1,页面上出现了上一元素,class属性也为n,因此,这时得到的元素为上一元素 In [71]: ele_next.click...如果我们在定位元素的时候,元素还未被加载出来,那么将会ElementNotVisibleException异常。 使用Waits来等待页面完整加载出来,就可以解决该问题。...举个例子,如果面上有n个元素的class都是’column-md-3’,那么只要有1个元素存在,这个方法就返回True text_to_be_present_in_element 判断某个元素中的text...判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去,否则返回False invisibility_of_element_located 判断某个元素中是否不存在

2.6K32

Python爬虫 selenium自动化 利用搜狗搜索爬取微信公众号文章信息

二、selenium爬虫 selenium是一个用于web应用程序自动化测试的工具,直接运行在浏览器当中,可以通过代码控制与页面上元素进行交互,并获取对应的信息。...//span[@class="s2"]').text # 文章发表的日期如果较近可能显示的为 1天前 12小前 30分钟前 需要进行处理 # 可以用 datetime...print(link) print('*' * 25) for i in range(10): get_news() if i == 9: # 如果访问到第十跳出循环...browser.find_element_by_id("sogou_next").click() time.sleep(random.randint(3, 5)) # 直到不存在下一...发现求知的乐趣,在不断总结学习中进步。坚持输出优质文章,期待你的关注,一起交流学习,互相成就。 发现求知的乐趣,在不断总结学习中进步,与诸君共勉。

3K30

Python:基础&爬虫

如果该文件不存在,创建新文件进行写入。 r+ 打开一个文件用于读写。文件指针将会放在文件的开头。 w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。...如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。...: nameTESTcountry ''' 注释:在使用字典作为迭代器,返回的是键,而不是。...start=" getData(baseurl) 可以看到排名250的梦之安魂曲也被成功爬取到 3 BeautifulSoup4BeautifulSoup4 lxml 一样,Beautiful...,返回None

97410

Python网络爬虫笔记(四):使用selenium获取动态加载的内容

(一)  说明 上一篇只能下载一的数据,第2、3、4....100的数据没法获取,在上一篇的基础上修改了下,使用selenium去获取所有的href属性。...使用selenium去模拟浏览器有点麻烦,例如有300就要点300次(按博客园这种一20条,也就是6000条数据。...(二)  完整代码 delayed.py的代码还是之前一样。最好限速,不限速很容易被拒绝连接,而且也不道德。...selenium获取所有随笔href属性的,url只能传小类的,例如https://www.cnblogs.com/cate/python/ 13 def selenium_links(url):...time.sleep(1) #隐式 显式等待都尝试了,还是报错,只能等待1秒了(调试又正常运行) 24 x +=1 25 #等待 Next出现并返回 ,就是博客园翻到下一的那个元素

3.1K60

频次最高的38道selenium面试题及答案(下)

我们可以用js来操作隐藏元素。jsselenium不同,只有页面上有的元素(在dom里面的)都能正常操作。 21、如何判断一个页面上元素是否存在?...法1:用try…except 在代码块加上 法2:用elements定义组元素方法 然后根其元素个数len()<1 存在返回True, 不存在返回False 法3:结合WebDriverWait...需要二次定位 :①拿到所有的option;②遍历option的value并与后台拿到的进行比较(相同选择该option)。 29、点击链接以后,selenium是否会自动等待该页面加载完毕?...所以有的时候,当selenium并未加载完一个页面再请求页面资源,则会误报不存在元素。所以首先我们应该考虑判断,selenium是否加载完此页面。其次再通过函数查找该元素。...Selenium仅支持基于Web的应用程序的测试; 无法使用Selenium测试移动应用程序,可以选择Appium进行移动端功能测试; 验证码条形码阅读器无法使用Selenium进行测试; Selenium

3.1K20
领券