ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

selenuim应用

2021-10-07 19:34:11  阅读:162  来源: 互联网

标签:img selenuim element bro tag 应用 li find


百度自动登录

from selenium import webdriver
import time

# 1.使用谷歌浏览器访问百度首页
bro = webdriver.Chrome()
bro.get('https://www.baidu.com/')
# 2.查找页面上的登录按钮
login_tag = bro.find_element_by_id('s-top-loginbtn')
# 3.点击登录按钮
time.sleep(0.5)
login_tag.click()
'''延迟等待:页面数据有时候需要时间加载 但是代码不会自动等'''
time.sleep(3)
# 4.查找点击短信登录按钮
message_tag = bro.find_element_by_id('TANGRAM__PSP_11__changeSmsCodeItem')
message_tag.click()
time.sleep(0.5)
# 5.查找手机号输入框并填写内容
phone_tag = bro.find_element_by_id('TANGRAM__PSP_11__smsPhone')
phone_tag.send_keys(18818188888)
time.sleep(0.5)
# 6.查找发送验证码按钮并点击
btn_tag = bro.find_element_by_id('TANGRAM__PSP_11__smsTimer')
btn_tag.click()
time.sleep(0.5)
# 7.查找并点击登录按钮
submit_tag = bro.find_element_by_id('TANGRAM__PSP_11__smsSubmit')
submit_tag.click()
time.sleep(0.5)

bro.close()

延时等待

有时候我们在访问网站数据的时候 加载需要一定的时间 没有加载完全的情况下代码极其容易报错 此时需要我们的等待页面数据加载完毕 如何精确等待?

把以下代码加载访问网页的代码下面,之后遇到网页加载都会自动延时等待

bro.implicitly_wait(10)

京东商品数据

1.商品数据的展示页存在动态加载的情况 需要往下滚动

window.document.body.scrollHeight  # 当前页面屏幕高度
window.scrollTo  # 滚动到指定位置

2.针对图片数据存在懒加载现象
3.多页数据的爬取
由于我们使用的是selenuim所以此处只需要查找下一页按钮点击即可
将单页爬取数据的代码封装成一个函数 之后就可以循环爬取多页
4.数据的持久化

import time

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

bro = webdriver.Chrome()
# 1.访问京东首页
bro.get('https://www.jd.com/')
bro.implicitly_wait(10)  # 延时等待
# 2.查找搜索款并输入商品名称
search_input = bro.find_element_by_id('key')
search_input.send_keys('显卡')
# 3.按下enter键进入商品展示页
search_input.send_keys(Keys.ENTER)

# 由于数据存在滚动加载的现象
for i in range(0, 8000, 1000):  # 千万不能直接到底 一定要有一个波段
    bro.execute_script('window.scrollTo(0,%s)' % i)
    time.sleep(0.5)

good_list = bro.find_elements_by_css_selector('li.gl-item')
# 循环获取每一个li标签 筛选所需数据
for li in good_list:
    # 图标标签的src属性
    img_tag = li.find_element_by_css_selector('div.p-img a img')
    img_src = img_tag.get_attribute('src')
    '''img标签的src属性存在懒加载现象 src没有就在data-lazy-img属性下'''
    if not img_src:
        img_src = 'https:' + img_tag.get_attribute('data-lazy-img')
    # 商品价格
    price_tag = li.find_element_by_css_selector('div.p-price strong')
    order_price = price_tag.text
    # 商品描述
    desc_tag = li.find_element_by_css_selector('div.p-name a em')
    order_desc = desc_tag.text
    # 商品链接
    link_tag = li.find_element_by_css_selector('div.p-name a')
    order_link = link_tag.get_attribute('href')
    # 商品销量
    commit_tag = li.find_element_by_css_selector('div.p-commit strong a')
    order_commit = commit_tag.text
    # 店铺名称
    shop_tag = li.find_element_by_css_selector('div.p-shop span a')
    shop_name = shop_tag.text
    # 店铺链接
    shop_link = shop_tag.get_attribute('href')
    # 通过打印展示数据 也可以数据持久化到表格文件
    print("""
    商品描述:%s
    商品价格:%s
    商品图片:%s
    商品链接:%s
    店铺名称:%s
    店铺链接:%s
    """ % (order_desc, order_price, img_src, order_link, shop_name, shop_link))

bro.close()

知乎登录案例

1.电脑端知乎不登陆是无法直接访问首页的
2.network监控发送登录请求体数据为加密
    加密的代码关键字:encrypt
    解密的代码关键字:decrypt
3.搜索关键字encrypt通过断点调试查看到内部真实数据
client_id=c3cef7c66a1843f8b3a9e6a1e3160e20&grant_type=password&timestamp=1566371889615&source=com.zhihu.web&signature=849409fe69f76b28a7ebfa95f0acc784d7c812bf&username=+8618896530856&password=dadasdasdas&captcha=nngt&lang=en&utm_source=&ref_source=other_https://www.zhihu.com/signin?next=%2F

 

标签:img,selenuim,element,bro,tag,应用,li,find
来源: https://www.cnblogs.com/wyhb/p/15376779.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有