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

小网站开发网站平台建设专家意见

小网站开发,网站平台建设专家意见,网站域名会赠送几个邮箱,学校网站报价方案1 selenium等待元素加载 2 selenium元素操作 3 selenium操作浏览器执行js 4 selenium切换选项卡 5 selenium前进后退异常处理 6 登录cnblogs 7 抽屉半自动点赞 8 xpath 9 动作链 10 自动登录12306 上节回顾 # 1 bs4 解析库---》xml(html)-遍历文档树-属性 文本 标签名-搜索文…1 selenium等待元素加载 2 selenium元素操作 3 selenium操作浏览器执行js 4 selenium切换选项卡 5 selenium前进后退异常处理 6 登录cnblogs 7 抽屉半自动点赞 8 xpath 9 动作链 10 自动登录12306 上节回顾 # 1 bs4 解析库---》xml(html)-遍历文档树-属性 文本 标签名-搜索文档树find find_all-5 种过滤器字符串正则布尔列表方法-find(name字符串,src正则,class_布尔,href列表,text字符串,方法)-遍历文档树和搜索文档树可以连用find() 结果是Tag类的对象BeautifulSoup继承了它结果可以继续 . 也可以继续 find-find的其他参数-limit-recursive-链式调用-小说图片# 2 css选择器-id选择器-标签选择器-类选择器-属性选择器- 标签- .类- #id- div a- divasoup.select(css选择器) 可能是多个放到列表中# 3 selenium :控制浏览器解决requests不能执行js的问题-浏览器驱动浏览器版本-pip install selenium-快速使用import timefrom selenium import webdriver# 跟人操作浏览器一样打开了谷歌浏览器拿到浏览器对象browebdriver.Chrome()# 在地址栏中输入地址bro.get(https://www.baidu.com)time.sleep(5)bro.close() # 关闭当前tab页bro.quit() # 关闭浏览器# 4 模拟登录百度-查找标签# By.ID # 根据id号查找标签# By.NAME # 根据name属性查找标签# By.TAG_NAME # # 根据标签查找标签# By.CLASS_NAME # 按类名找# By.LINK_TEXT # a标签文字# By.PARTIAL_LINK_TEXT # a标签文字模糊匹配#---------selenium 自己的--------# By.CSS_SELECTOR # 按css选择器找# By.XPATH #按xpath找-操作标签-点击-写文字# 5 无头浏览器-bro.page_source# 6 找到标签-属性-文本-标签名-位置-大小1 selenium等待元素加载 # 代码操作非常快---》有的标签还没加载---》找就找不到---》就会报错 # 设置等待显示等待隐士等待 bro.implicitly_wait(10) # 找某个标签如果找不到最多等待10s2 selenium元素操作 # 点击操作click()# 写文字send_keys(内容)# 清空文字clear()3 执行js # 在使用selenium操作浏览器的时候可以自己写js执行会用这东西做什么-创建新的选项卡-打印出一些变量属于当前爬取的页面中的变量-获取当前登录的cookie-滑动屏幕import timefrom selenium import webdriver from selenium.webdriver.common.by import By bro webdriver.Chrome() bro.get(https://www.pearvideo.com/category_1) bro.implicitly_wait(10) bro.maximize_window() # 1 基本使用 # bro.execute_script(alert(美女)) # 2 打印出一些变量 # resbro.execute_script(console.log(urlMap)) # print(res)# 3 新建选项卡 # bro.execute_script(open())# 4 滑动屏幕 # bro.execute_script(scrollTo(0,document.documentElement.scrollHeight))# 5 获取当前访问地址 # bro.execute_script(alert(location)) # bro.execute_script(locationhttp://www.baidu.com)# 6 打印cookie bro.execute_script(alert(document.cookie)) time.sleep(10) bro.close()4 切换选项卡 from selenium import webdriver import time bro webdriver.Chrome() bro.get(https://www.pearvideo.com/) bro.implicitly_wait(10) print(bro.window_handles) # 开启选项卡 bro.execute_script(window.open()) # 获取出所有选项卡bro.switch_to.window(bro.window_handles[1]) # 切换到某个选项卡 bro.get(http://www.taobao.com)time.sleep(2) bro.switch_to.window(bro.window_handles[0]) # 切换到某个选项卡 bro.get(http://www.baidu.com)time.sleep(2) bro.execute_script(window.open()) bro.execute_script(window.open()) bro.close() # 关闭选项卡 bro.quit() # 关闭页面5 前进后退异常处理 from selenium import webdriver import time bro webdriver.Chrome() bro.get(https://www.pearvideo.com/) bro.implicitly_wait(10)# 获取出所有选项卡 time.sleep(2) bro.get(http://www.taobao.com)time.sleep(2)bro.get(http://www.baidu.com) time.sleep(2) bro.back() time.sleep(2) bro.back() time.sleep(2) bro.forward() bro.quit() # 关闭页面6 登录cnblogs # 以后要爬取的数据要登录后才能看到-如果使用selenium速度慢---》不能开启多线程---》速度不会太快-如果使用requests发送请求登录不好登录自动登录不进去--》拿不到cookie-使用selenium登录---》拿到cookie---》换到别的机器使用这个cookie依然是登录状态import timefrom selenium import webdriver from selenium.webdriver.chrome.options import Options import json from selenium.webdriver.common.by import By # 去掉自动化软件控制的检测 options Options() options.add_argument(--disable-blink-featuresAutomationControlled) # 去掉自动化控制 bro webdriver.Chrome(optionsoptions) # bro webdriver.Chrome() ########### 纯自动登录#######得到了cookie bro.get(https://www.cnblogs.com/) bro.implicitly_wait(10) bro.maximize_window() login_btn bro.find_element(By.LINK_TEXT, 登录) login_btn.click()time.sleep(2)# 找到用户名和密码输入框 username bro.find_element(By.CSS_SELECTOR, #mat-input-0) password bro.find_element(By.ID, mat-input-1)submit_btn bro.find_element(By.CSS_SELECTOR,body app-root app-sign-in-layout div div app-sign-in app-content-container div div div form div button) # 验证码 codebro.find_element(By.ID,rectMask) time.sleep(1)username.send_keys(qq.com) time.sleep(1) password.send_keys(#) time.sleep(1) submit_btn.click() # 一种情况直接登录成功 一种情况会弹出验证码 code.click() time.sleep(10)# 让程序先停在这---》手动操作浏览器---》把验证码搞好---》程序再继续往下走 # 到现在是登录成功的状态 # 取出cookie存起来 cookies bro.get_cookies() with open(cnblogs.json, w, encodingutf-8) as f:json.dump(cookies, f)time.sleep(2) bro.close() import timefrom selenium import webdriver from selenium.webdriver.chrome.options import Options import json from selenium.webdriver.common.by import By# 去掉自动化软件控制的检测 options Options() options.add_argument(--disable-blink-featuresAutomationControlled) # 去掉自动化控制 bro webdriver.Chrome(optionsoptions)bro.get(https://www.cnblogs.com/) bro.implicitly_wait(10) bro.maximize_window()time.sleep(5) # 取出cookie--》写入到浏览器中---》刷新浏览器---》登录状态 with open(cnblogs.json, r) as f:cookies json.load(f) # 写到浏览器中 for item in cookies:bro.add_cookie(item) # 如果是没登录的cookie往里写会报错# 刷新浏览器 bro.refresh()time.sleep(5) bro.close() 7 抽屉半自动点赞 # 使用selenium登录---》拿到cookie # 点赞 使用requests 用cookie点赞 ####自动登录---使用selenium#### import json# import time # # from selenium import webdriver # from selenium.webdriver.chrome.options import Options # import json # from selenium.webdriver.common.by import By # # bro webdriver.Chrome() # bro.get(https://dig.chouti.com/) # bro.implicitly_wait(10) # bro.maximize_window() # # btn_login bro.find_element(By.ID, login_btn) # time.sleep(1) # btn_login.click() # time.sleep(1) # # phone bro.find_element(By.NAME, phone) # password bro.find_element(By.CSS_SELECTOR, # body div.login-dialog.dialog.animated2.scaleIn div div.login-footer div.form-item.login-item.clearfix.mt24 div input.input.pwd-input.pwd-input-active.pwd-password-input) # # submit_login bro.find_element(By.CSS_SELECTOR, # body div.login-dialog.dialog.animated2.scaleIn div div.login-footer div:nth-child(4) button) # # phone.send_keys(你的手机号) # password.send_keys(你的密码) # time.sleep(2) # submit_login.click() # # input(等你) # # cookies bro.get_cookies() # with open(chouti.json, w, encodingutf-8) as f: # json.dump(cookies, f) # # time.sleep(2) # bro.close()#### 使用requests点赞# 访问首页解析出id号 import requests from bs4 import BeautifulSoup#### 携带cookie访问##### session requests.Session() cookie {} # 本地取出来写入 with open(chouti.json, r) as f:cookie_list json.load(f) ##### selenium的cookie和requests的cookie格式不一样要转换 {key:value,key:value} for item in cookie_list:cookie[item[name]] item[value] header{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36} res session.get(https://dig.chouti.com/, cookiescookie,headersheader) soup BeautifulSoup(res.text, html.parser)print(res.text)divs soup.find_all(namediv, class_link-item) for div in divs:article_id div.attrs.get(data-id)data {linkId: article_id}res1 session.post(https://dig.chouti.com/link/vote, datadata,headersheader)print(res1.text) 8 xpath # 在 xml中查找元素解析库-解析库自带的-css选择器-xpath---》通用的---》即为XML路径语言XML Path Language它是一种用来确定XML文档中某部分位置的语言# 记住的nodename 选取此节点的所有子节点。/ 从根节点选取。// 从匹配选择的当前节点选择文档中的节点而不考虑它们的位置。. 选取当前节点。.. 选取当前节点的父节点。 选取属性。 doc htmlheadbase hrefhttp://example.com/ /titleExample website/title/headbodydiv idimagesa hrefimage1.html idlqzName: My image 1 br /img srcimage1_thumb.jpg //aa hrefimage2.htmlName: My image 2 br /img srcimage2_thumb.jpg //aa hrefimage3.htmlName: My image 3 br /img srcimage3_thumb.jpg //aa hrefimage4.htmlName: My image 4 br /img srcimage4_thumb.jpg //aa hrefimage5.html classli li-item nameitemsName: My image 5 br /img srcimage5_thumb.jpg //aa hrefimage6.html nameitemsspanh5test/h5/spanName: My image 6 br /img srcimage6_thumb.jpg //a/div/body /htmlfrom lxml import etreehtml etree.HTML(doc) # htmletree.parse(search.html,etree.HTMLParser()) # 1 所有节点 # ahtml.xpath(//*) # 2 指定节点结果为列表 # ahtml.xpath(//head) # 3 子节点子孙节点 # ahtml.xpath(//div/a) # ahtml.xpath(//body/a) #无数据 # ahtml.xpath(//body//a) # 4 父节点 # ahtml.xpath(//body//a[hrefimage1.html]/..) # ahtml.xpath(//body//a[1]/..) # 也可以这样 # ahtml.xpath(//body//a[1]/parent::*) # ahtml.xpath(//body//a[1]/parent::div) # 5 属性匹配 # ahtml.xpath(//body//a[hrefimage1.html])# 6 文本获取 /text() # ahtml.xpath(//body//a[hrefimage1.html]/text())# 7 属性获取 属性名 # ahtml.xpath(//body//a/href) # # 注意从1 开始取不是从0 # ahtml.xpath(//body//a[1]/href)# 8 属性多值匹配 # a 标签有多个class类直接匹配就不可以了需要用contains # ahtml.xpath(//body//a[classli]) # ahtml.xpath(//body//a[contains(class,li)]) # ahtml.xpath(//body//a[contains(class,li)]/text()) # 9 多属性匹配 # ahtml.xpath(//body//a[contains(class,li) or nameitems]) # ahtml.xpath(//body//a[contains(class,li) and nameitems]/text()) # ahtml.xpath(//body//a[contains(class,li)]/text()) # 10 按序选择 # ahtml.xpath(//a[2]/text()) # ahtml.xpath(//a[2]/href) # 取最后一个 # ahtml.xpath(//a[last()]/href) # ahtml.xpath(//a[last()-1]/href) # 倒数第二个 # 位置小于3的 # a html.xpath(//a[position()3]/href)# 倒数第三个 # ahtml.xpath(//a[last()-2]/href) # 11 节点轴选择 # ancestor祖先节点 # 使用了* 获取所有祖先节点 # ahtml.xpath(//a/ancestor::*) # # 获取祖先节点中的div # ahtml.xpath(//a/ancestor::div) # attribute属性值 # ahtml.xpath(//a[1]/attribute::*) # ahtml.xpath(//a[1]/attribute::href)# child直接子节点 # ahtml.xpath(//a[1]/child::*) # descendant所有子孙节点 # ahtml.xpath(//a[6]/descendant::*) # following:当前节点之后所有节点 # ahtml.xpath(//a[1]/following::*) # ahtml.xpath(//a[1]/following::*[1]/href) # following-sibling:当前节点之后同级节点 # ahtml.xpath(//a[1]/following-sibling::*) # ahtml.xpath(//a[1]/following-sibling::a) # ahtml.xpath(//a[1]/following-sibling::*[2]) # ahtml.xpath(//a[1]/following-sibling::*[2]/href)# print(a) / // . .. 取文本 /text() 取属性 /属性名 根据属性过滤 [属性名属性值] class 特殊 [contains(class,li)] # 终极大招 直接复制 # 案例 import requests resrequests.get(https://www.w3school.com.cn/xpath/xpath_syntax.asp) from lxml import etreehtml etree.HTML(res.text) # ahtml.xpath(//div[idintro]//strong/text()) # ahtml.xpath(/html/body/div/div[4]/div[2]/p/strong) ahtml.xpath(//*[idintro]/p/strong/text()) print(a) 9 动作链 # 模拟鼠标点住拖动的效果实现滑块认证# 两种形式-形式一actionsActionChains(bro) #拿到动作链对象actions.drag_and_drop(sourse,target) #把动作放到动作链中准备串行执行actions.perform()-方式二ActionChains(bro).click_and_hold(sourse).perform()distancetarget.location[x]-sourse.location[x]track0while track distance:ActionChains(bro).move_by_offset(xoffset2,yoffset0).perform()track2from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdriver.support.wait import WebDriverWait # 等待页面加载某些元素 import time from selenium.webdriver.common.by import Bydriver webdriver.Chrome() driver.get(http://www.runoob.com/try/try.php?filenamejqueryui-api-droppable) driver.implicitly_wait(3) driver.maximize_window()try:driver.switch_to.frame(iframeResult) ##切换到iframeResultsourse driver.find_element(By.ID, draggable)target driver.find_element(By.ID, droppable)# 方式一基于同一个动作链串行执行# actions ActionChains(driver) # 拿到动作链对象# actions.drag_and_drop(sourse, target) # 把动作放到动作链中准备串行执行# actions.perform()# 方式二不同的动作链每次移动的位移都不同ActionChains(driver).click_and_hold(sourse).perform() # 鼠标点中源 标签 不松开distancetarget.location[x]-sourse.location[x]track 0while track distance:ActionChains(driver).move_by_offset(xoffset2, yoffset0).perform()track 2ActionChains(driver).release().perform()time.sleep(10)finally:driver.close() 10 自动登录12306 import time from selenium.webdriver import ActionChains from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Options # 12306检测到咱们用了自动化测试软件 options Options() options.add_argument(--disable-blink-featuresAutomationControlled) # 去掉自动化控制 bro webdriver.Chrome(chrome_optionsoptions) bro.get(https://kyfw.12306.cn/otn/resources/login.html) bro.implicitly_wait(5) bro.maximize_window() user_login bro.find_element(By.CSS_SELECTOR,#toolbar_Div div.login-panel div.login-box ul li.login-hd-code.active a)user_login.click() time.sleep(1)username bro.find_element(By.ID, J-userName) password bro.find_element(By.ID, J-password) submit_btn bro.find_element(By.ID, J-login) username.send_keys(18953675221) password.send_keys() time.sleep(3) submit_btn.click()time.sleep(5)# 找到滑块 span bro.find_element(By.ID, nc_1_n1z) ActionChains(bro).click_and_hold(span).perform() ActionChains(bro).move_by_offset(xoffset300, yoffset0).perform() ActionChains(bro).release().perform() time.sleep(5)bro.close()
http://www.sadfv.cn/news/105448/

相关文章:

  • 怎么做私人网站wordpress能否做网站
  • 太仓网站建设排名重庆建设人才网
  • 北京城乡建设学校网站jsp网站开发详解
  • 虚拟主机销售网站模板网络营销大师排行榜
  • 怎样设立网站怎么找做网站平台公司
  • 网站如何被百度收录广告设计总结
  • 新手自己建网站贴吧aso优化贴吧
  • 天津网站制作培训行业协会网站织梦模板
  • 网站建设的关注点lnmp 内网 wordpress
  • 沈阳网站设计运营公司手机上上建设网站
  • 手表电商网站公司邮箱一般用哪个
  • 网站建设负责那内容上传吗网站免费模板制作
  • 网站开发实现的功能衡水网站建设优化推广
  • 域名指向另一个网站做网站的费用记哪个会计科目
  • wordpress能不能做商城网站编辑 seo
  • 高校思政网站建设意义wordpress哪个主题
  • 国内十大网站排名有哪些好的印花图案设计网站
  • 福建省建设系统网站php简易购物网站开发
  • 营销型外贸网站广州wordpress表单上传多个文件
  • 上饶网站开发 app开发wordpress search标签页
  • 写作网站私密做一个综合性的网站多少钱
  • 用nodejs可以做网站么做的网站怎么样才能再网上看到
  • 网站建设需要学编程么东莞路桥总公司电话
  • 做软件公司网站哪家上市公司做视频网站
  • 网站开发语言html5 php万网域名注册步骤
  • 网站如何接广告门户网站规划
  • 张家口建站优化外国炫酷网站
  • 图片博客 wordpress太原seo整站优化
  • 建立网站 英语怎么说北京最大的商场
  • 站长工具成品源码江西省赣州市南康家具城