Python 自学记录(selenium的安装 基本用法 实现 自动化 模拟百度访问自己的博客所有文章)

selenium 安装

1.下载selenium插件,需要匹配自己的浏览器(这里只举例谷歌)

(1)谷歌浏览器驱动下载地址 (下载好之后解压,放在一个位置即可)
http://chromedriver.storage.googleapis.com/index.html
(2)谷歌驱动和谷歌浏览器版本之间的映射表 (由于版本都比较新,直接选择对应的版本号的就好了)
http://blog.csdn.net/huilan_same/article/details/51896672
(3)查看自己谷歌浏览器版本
谷歌浏览器右上角‐‐>帮助‐‐>关于
(4)win+R 打开cmd 定位到 自己的Puyton库 中的 Scripts文件夹下
执行 pip install selenium 命令 安装 selenium库

2.selenium 的基本用法

#导入
from selenium import webdriver

#创建浏览器操作对象
path = “chromedriver.exe”(谷歌浏览器驱动的位置)
browser = webdriver.Chrome(path)

#访问网站
url = “https://www.baidu.com”
browser.get(url)

#获取页面元素内容
content = browser.page_source
print(content)

selenium元素定位

#以下 方法都有 element+s 的相同方法
#是获取多个对象 用法相同,就不一 一 举例

#根据id值 找到对象
find_element_by_id("")
#列 这是获取的一个按钮对象
butten = browser.find_element_by_id(“su”)
print(butten)

#根据某属性值 找到对象
find_element_by_属性名("")
#列
butten = browser.find_element_by_name(“wd”)
print(butten)

#根据xpath 找到对象
find_element_by_xpath("")
#列 这里需要懂 xpath 相关语法
butten = browser.find_element_by_xpath("//input[@id=‘su’]")
print(butten)

#根据标签名字 找到对象
find_elements_by_tag_name(“标签名”)
#例 获取页面中所有的 input 标签对象
butten = browser.find_elements_by_tag_name(“input”)
print(butten)

#选择器 找到对象
#id选择器 .class选择器(不懂可以学习前端知识)
butten = browser.find_element_by_css_selector("#su")
print(butten)

#获取超链接 找到对象
根据直播 超链接中的内容 直接定位元素
butten = browser.find_element_by_link_text(“直播”)
print(butten)

元素信息的获取

butten = browser.find_element_by_id(“su”)
#获取元素 值 根据属性名 获取属性值
print(butten.get_attribute(“属性名”))
print(butten.get_attribute(“value”))

#获取当前对象的标签名称
print(butten.tag_name)

#获取元素文本
a = browser.find_element_by_link_text(“新闻”)
print(a.text)

3.基本交互方法

#获取输入框
input = browser.find_element_by_id(“kw”)
#输入信息
input.send_keys(“csdn”)

#获取按钮对象
butten = browser.find_element_by_id(“su”)
#点击按钮
butten.click()

#滑动页面
js_bottom = “document.documentElement.scrollTop=100000”
browser.execute_script(js_bottom)

#返回上一页
browser.back()

#回退
browser.forward()

4.自动化模拟百度访问自己博客所有文章的案例代码

# _*_ coding : utf-8 _*_
# @Time : 2021/10/14 16:16
# @Author Lpx
# @File : selenium_02
# @Project : pythonProject

# 自动访问  自己的博客  3篇最新文章
import time
from selenium import webdriver

#切换最新页面方法
def windowsNxet():
    # 当前打开的所有窗口
    windows = browser.window_handles
    #关闭当前页面
    browser.close()
    # 转换到最新打开的窗口
    browser.switch_to.window(windows[-1])

#驱动地址   这里使用的是谷歌浏览器驱动
path = "chromedriver.exe"
#加载驱动
browser = webdriver.Chrome(path)
url = "http://ww.baidu.com"
browser.get(url)

#强制睡眠  保证页面元素加载完毕
time.sleep(2)
#获取百度输搜索入框
baiduinput = browser.find_element_by_id("kw")
#输入要搜索的内容
baiduinput.send_keys("csdn")

time.sleep(2)

#获取百度  百度一下  按钮
baidubutten = browser.find_element_by_id("su")
#执行搜索功能
baidubutten.click()

time.sleep(4)

#获取当前页搜索到的第一个 超链接标签
# 因为第一个标签就是想要的网站
baidua = browser.find_element_by_xpath("//h3/a")
#点击 超链接
baidua.click()

time.sleep(6)

# 转换到最新打开的窗口
windowsNxet()
#获取  csdn 的搜索框
csdninput = browser.find_element_by_xpath('//input[@id="toolbar-search-input"]')
#输入想要搜索的内容
csdninput.send_keys("my_batis的博客")

time.sleep(2)

#获取 csdn 搜索按钮
csdnbutton = browser.find_element_by_id("toolbar-search-button")
#执行
csdnbutton.click()


# 转换到最新打开的窗口
windowsNxet()

time.sleep(2)

#获取所有 li 标签
csdnli = browser.find_elements_by_xpath("//ul/li")
yonghunum = 0
# 筛选出 用户 li
for n in range(len(csdnli)):
    if(csdnli[n].text == '用户'):
        yonghunum = n
        break
#获取 用户栏 的 li
yonghuli = csdnli[n]
#执行
yonghuli.click()

time.sleep(2)

#xpath 语法锁定自己的 博客
myboke = browser.find_element_by_xpath('//a[@href="https://me.csdn.net/my_batis?ops_request_misc=&request_id=&biz_id=&utm_medium=distribute.pc_search_result.none-task-user-null-1-121486706.nonecase&utm_term=my_batis%E7%9A%84%E5%8D%9A%E5%AE%A2"]')
#进入自己的博客页面
myboke.click()

time.sleep(2)


# 转换到最新打开的窗口
windowsNxet()
#获取自己所哟普文章的 链接
bokelist =  browser.find_elements_by_xpath("//article/a")

#浏览自己所有的博客文章
for n in range(len(bokelist)):
    bokelink = bokelist[n]
    bokelink.click()
    time.sleep(2)
    #获取所有页面
    windows = browser.window_handles
    #切换到最新页面
    browser.switch_to.window(windows[-1])
    time.sleep(2)
    #关闭最新页面
    browser.close()
    #切换回去
    browser.switch_to.window(windows[0])

#关闭浏览器
time.sleep(3)
browser.quit()




5.无界面化

无界面化 可以提升运行速度,关掉不必要的页面数据加载
用当前这个获取的 browser 替换 上面的browser 即可

可以用
browser.save_screenshot(“tupian.png”)
方法 截取执行的图片,看到执行的过程

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
# 指定浏览器分辨率
options.add_argument('window-size=1920x1280')
# 需要加上这个属性来规避bug
chrome_options.add_argument('--disable‐gpu')
 # 隐藏滚动条, 应对一些特殊页面
options.add_argument('--hide-scrollbars')
# 不加载图片, 提升速度
options.add_argument('blink-settings=imagesEnabled=false') 
# 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
options.add_argument('--headless') 
# 以最高权限运行
options.add_argument('--no-sandbox')
#添加crx插件
option.add_extension('d:\crx\AdBlock_v2.17.crx') 
# 禁用JavaScript
option.add_argument("--disable-javascript") 
# 本地 谷歌浏览器的路径
path = r'C:\xxxxxxx\Google\Chrome\Application\chrome.exe'
chrome_options.binary_location = path
#executable_path  谷歌驱动路径的位置,可以不写,他有默认值为 当前路径下的 chromedriver.exe
browser = webdriver.Chrome(chrome_options=chrome_options,executable_path=".exe")
browser.get('http://www.baidu.com/')

仅供学习参考!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Heart&Fire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值