当前位置: 首页 > news >正文

高端网站设计报价表免费网站模板库

高端网站设计报价表,免费网站模板库,如何判断一个网站是php还是asp,third 原创wordpress企业主题目录 任务目标 创建Ajax网站 创建服务器程序 Selenium XX 等待 1. Selenium强制等待 2. Selenium隐性等待 3. Selenium循环等待 4. Selenium显示等待 等待方法 任务目标 在浏览器加载网页的过程中#xff0c;网页的有些元素时常会有延迟的现象#xff0c;在HTML元素…目录 任务目标 创建Ajax网站 创建服务器程序 Selenium XX 等待 1. Selenium强制等待 2. Selenium隐性等待 3. Selenium循环等待 4. Selenium显示等待 等待方法 任务目标 在浏览器加载网页的过程中网页的有些元素时常会有延迟的现象在HTML元素还没有准备好的情况下去操作这个HTML元素必然会出现错误这个时候Selenium需要等待HTML元素。例如上节实例中出现的select的下拉框元素选项填充需要执行JavaScript脚本。我们来学习如果使用Selenium等待延迟的HTML元素并最终爬取元素的数据。 创建Ajax网站 phone.html 如下 注phone.html 文件要位于 templates 这个目录下 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title /head bodyform namefrm action/divspan idmsg/spanlabel forxmark/labelselect idxmark/select/divinput typesubmit value提交 idsubmit disabledtrue/form /body scriptfunction loadMarks(){var httpnew XMLHttpRequest(); http.open(get,/marks,true);http.send(null);http.onreadystatechangefunction(){// onreadystatechange存储函数每当 readyState 属性改变时就会触发调用该函数。// readystate存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。// 0: 请求未初始化 1: 服务器连接已建立 2: 请求已接收 3: 请求处理中 4: 请求已完成且响应已就绪// status200OK404未找到页面if (http.readyState4 http.status200){ //请求完成并且成功返回var xmarkdocument.getElementById(xmark); var xcolordocument.getElementById(xcolor); markseval((http.responseText));// JS中将JSON的字符串解析成JS对象格式for(var i0;imarks.length;i) xmark.options.add(new Option(marks[i],marks[i])); document.getElementById(submit).disabledfalse;document.getElementById(msg).innerHTML品牌;}};}loadMarks(); /script /html 创建服务器程序 服务器server.py程序如下 import flask import json import timeapp flask.Flask(__name__)app.route(/) def index():return flask.render_template(phone.html)app.route(/marks) def loadMarks():time.sleep(1)marks [华为, 苹果, 三星]return json.dumps(marks) # 将JSON的对象格式转化成str格式app.run()模拟网站结果如下 Selenium XX 等待 1. Selenium强制等待 必须等待的时间缺点不能准确把握需要等待的时间有时操作还未完成等待就结束了导致报错有时操作已经完成了但等待时间还没有到浪费时间如果在用例中大量使用会浪费不必要的等待时间影响测试用例的执行效率。 from selenium import webdriver from selenium.webdriver.common.by import By import timedriver webdriver.Chrome() driver.get(http://127.0.0.1:5000)# 设置强制等待1.5秒 time.sleep(1.5)marks driver.find_elements(By.XPATH, //select/option) print(品牌数量:, len(marks)) for mark in marks:print(mark.text) form driver.find_element(By.XPATH, //form) print(form.get_attribute(innerHTML).strip()) time.sleep(5) driver.close()2. Selenium隐性等待 该方法是浏览器对象调用的方法即设置浏览器打开网页均等待的时长 同样如果设置的隐性等待时间不够长 还是爬取不到需要的数据。 from selenium import webdriver from selenium.webdriver.common.by import By import timedriver webdriver.Chrome()# 设置隐性加载时间1.5秒即网页在加载时最长等待 seconds 秒 driver.implicitly_wait(1.5)driver.get(http://127.0.0.1:5000) marks driver.find_elements(By.XPATH, //select/option) print(品牌数量:, len(marks)) for mark in marks:print(mark.text) form driver.find_element(By.XPATH, //form) print(form.get_attribute(innerHTML).strip()) time.sleep(5) driver.close()3. Selenium循环等待 循环等待 实际上这个爬虫程序能否爬到数据的关键是select中是否已经出现了option元素我们可以设置一个循环来判断是否有option元素 from selenium import webdriver from selenium.webdriver.common.by import By import timedriver webdriver.Chrome() try:driver.get(http://127.0.0.1:5000)waitTime 0while waitTime 10:marks driver.find_elements(By.XPATH, //select/option)if len(marks) 0:breaktime.sleep(0.5)waitTime 0.5if waitTime 10:raise Exception(Waiting time out)marks driver.find_elements(By.XPATH, //select/option)print(品牌数量:, len(marks))for mark in marks:print(mark.text)form driver.find_element(By.XPATH, //form)print(form.get_attribute(innerHTML).strip()) except Exception as err:print(err) time.sleep(5) driver.close()循环等待 实际上这个爬虫程序能否爬到数据的关键是select中是否已经出现了option元素我们可以设置一个循环来判断是否有option元素。 这个程序中使用 waitTime 变量来构造一个循环它最长等待 10 秒每间隔 0.5 秒就检查一次select中是否有option存在如果找到了option元素就退出等待循环不然就继续等待直到option出现为止如果 10 秒内还没有出现据抛出异常。 4. Selenium显示等待 from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import Bydriver webdriver.Chrome() try:driver.get(http://127.0.0.1:5000)# 显示等待locator (By.XPATH, //select/option)WebDriverWait(driver, 10, 0.5).until(EC.presence_of_element_located(locator))marks driver.find_elements(By.XPATH, //select/option)print(品牌数量:, len(marks))for mark in marks:print(mark.text)form driver.find_element(By.XPATH, //form)print(form.get_attribute(innerHTML).strip()) except Exception as err:print(err)构造一个定位元素的 locator 的对象例如通过 XPath 的方法定位select中的option元素 locator(By.XPATH,//select/option) 使用 WebDriverWait 构造一个实例调用 until 方法 WebDriverWait(driver, 10,0.5).until(EC.presence_of_element_located(locator)) 这条语句的含义是等待 locator 指定的元素出现最长等待 10 秒每间隔 0.5 秒就出现检查一次。如果在 10 秒内出现了该元素就是结束等待否则就抛出一个异常默认抛出异常为NoSuchElementException。 这种等待的优点等待判断准确不会浪费多余的等待时间在实际中使用可以提高执行效率。 等待方法 1. EC.presence_of_element_located(locator) 这种形式是 等待 locator指定的元素 出现 也就是HTML文档中建立起了这个元素。 2. EC.visibility_of_element_located(locator) 这种形式是 等待 locator指定的元素 可见 注意元素出现时未见得可见 例如 select idxmark styledisplay:none.../select 那么元素select是出现的但是不可见。 3. EC.element_to_be_clickable(locator) 这种形式是 等待 locator指定的元素 可以被点击 例如在爬虫程序中等待 input typesubmit 按钮可用被点击 locator (By.XPATH, //input[typesubmit]) WebDriverWait(driver, 10,0.5).until(EC.element_to_be_clickable(locator)) 或者等待 option 是否可以被点击 locator (By.XPATH, //select/option) WebDriverWait(driver,10,0.5).until(EC.element_to_be_clickable(locator)) 使用这两种方法都可以爬取到手机品牌数据。 但是注意使用 locator (By.XPATH, //select) WebDriverWait(driver,10,0.5).until(EC.element_to_be_clickable(locator)) 是等待select是否可以点击这个元素就是没有option时也是可以点击的因此用这个等待是爬取不到手机的品牌数据的。 4. EC.element_located_to_be_selected(locator) 这种形式是 等待 locator指定的元素 可以被选择可以被选择的元素一般是select中的选项option、输入的多选框 input typecheckbox 以及输入的单选框 input typeradio等元素。 locator (By.XPATH, //select/option) WebDriverWait(driver, 10,0.5).until(EC.element_located_to_be_selected(locator)) 同样能爬取到手机的品牌数据。 但是使用下列是不行的 locator (By.XPATH, //input[typesubmit]) WebDriverWait(driver,   10,0.5).until(EC.element_located_to_be_selected(locator)) 因为这样的 input typesubmit 是怎么样也不可以选择的。 5. EC.text_to_be_present_in_element(locator,text) 这种形式是等待 locator 指定的元素的文本中包含指定的text文本例如爬虫程序中使用下列的等待 locator (By.ID, msg) WebDriverWait(driver, 10,0.5).until(EC.text_to_be_present_in_element(locator,品)) 即等待span idmsg....../span元素中的文本包含品字由于在option出现后设置文本是品牌因此爬虫程序可以爬取到手机品牌数据。 下一篇文章实验项目一【文本反爬网站的分析和爬取】
http://www.dnsts.com.cn/news/31921.html

相关文章:

  • 做爰全过程免费狐狸网站如何在wordpress底部添加友情链接
  • 网站不想被收录机关门户网站建设意义
  • 传奇网站免费空间东仓建设网站
  • 做sorry动图的网站十堰建设网站首页
  • 云南省城市建设培训中心网站php网站文件下载怎么做
  • 更改备案网站名称专业做全景图的网站平台
  • 汉川网站开发做企业网站备案都需要什么资料
  • 现在建一个网站一年费用只要几百元人和做网站
  • 云南省住房和城乡建设局网站文山网站建设报价
  • 汽车制造网站建设温州市建设工程质监站网站
  • 怎么撤销网站备案外贸英文网站开发
  • 做网站找顺的深圳网站建设 信科便宜
  • 手机网站开发企业长治建立公司网站的步骤
  • 户外网站模板主题网站设计与制作
  • 专门做高仿的网站邵阳建设网站哪家好
  • 怀化公司网站建设洛阳网站seo
  • 网站建设智能优化乐清柳市阿里巴巴做网站的
  • 网站规划名词解释清远医疗网站建设
  • 如何进行网站设计dede手机网站模板制作
  • 黑色网站设计老薛主机安装wordpress
  • 外管局网站上做预收登记网页qq登录保护在哪里
  • 百度网站的优缺点做网站设计的价格
  • 网站做rss wordpress客户关系管理概念
  • 企业官方网站如何做蓝v认证创建网站平台
  • 环保网站 下载网络营销是什么的具体应用
  • 网站内部链接是怎么做的制作企业网站欢迎界面素材
  • 网站备案流程慢建com网站
  • 手机页面网站模板怎么卖建网站淄博
  • 成都网站建设公司优势网易官网建立个人网站
  • ps做网站ui做网站只有域名