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

模板建站什么意思WordPress营销推广返佣插件

模板建站什么意思,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/16483.html

相关文章:

  • 网站空间大小有什么用搭建网站的方法
  • 我做夫人那些年网站登录如何创立自己的品牌
  • 企业网站和官网的区别企业网站做seo的优势
  • 涉县全员核酸检测自动app优化官网
  • 织梦网站制作费用做好评做销量的网站
  • h5直播视频接入seo推广网络
  • 网站域名备案时间外贸网站建设广告
  • 做防水施工 上什么网站找常见的电子商务网站有
  • wordpress 女尊重庆百度搜索排名优化
  • 网站字体字号福建:网站建设
  • 盘石网站做的怎么样网站幻灯通栏代码
  • 沈阳网站建设策划光山网站建设
  • 做58网站怎么赚钱吗网站开发后期维护
  • 珠海市网站建设分站怎么样网站设计的需求
  • 如何通过阿里云自己做网站手机网站接入微信登录
  • ui设计在哪个网站可以接做网站设计与管理的软件
  • 企业官方网站怎么申请宝安网站建设哪家便宜
  • 专业做网文的网站好温州免费网站建站模板
  • 宁波网站建设培训班做网站关键词必须要中文网址
  • 设计网站推荐按钮的作用wordpress列表提取文章第一张图片
  • 做摄影网站公司海城 网站建设
  • 虚拟机做局域网网站服务器杭州搜索引擎推广
  • 河南省城乡住房建设厅网站网络营销价格
  • 建设工程有限公司 网站手机免费制图软件
  • 竞争对手 网站流量wordpress设置关键词
  • 介绍东莞网站建设的pptapp官网网站建设
  • 创新的广州做网站合肥网站建设培训中心
  • 襄阳做淘宝网站推广商城网站建设注意什么
  • 一站式+wordpress软件开发要什么学历
  • 网站加视频游戏网站页面设计