IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Selenium 开发, Mac python 版,简单套路 2022_05 -> 正文阅读

[Python知识库]Selenium 开发, Mac python 版,简单套路 2022_05

1, 短平快

效果为查看 feed 流,

想看很久以前的,不想要用手滑。

就 Selenium 自动滑到底 15 次

import time

from selenium import webdriver

drive = webdriver.Chrome()
drive.implicitly_wait(15)
drive.maximize_window()
drive.get("https://feeds")
for _ in range(15):
    time.sleep(2)
    drive.execute_script("window.scrollTo(0, document.body.scrollHeight)")
解释:

拿到 Chrome 的实例,隐式等待网页刷新出来

最大化窗口,

开启网页,睡两秒,拉到底一次

( 对应, 网页刷新的网络请求,是异步操作 )

1.1 ,准备工作

a, 没使用 webdriver 中的 Safari,

目前是 Safari 只能开一个进程,

Chrome 能开多个进程,方便很多

b , 下载 chrome 的 webdrive, 放到 bin 文件夹

首先,看 chrome 的版本

chrome 中这样 chrome://version/

这里下载驱动

https://chromedriver.chromium.org/downloads

放到这个路径

/usr/local/bin

2, 例子是 booking.com

也就是 fcc 的视频教程,

简单说下套路,( booking.com 的代码,好像更新了好多 )

例如,大量使用 CSS_SELECTOR

2.1, 选择货币

btn = self.find_element(By.CSS_SELECTOR, 'button[data-tooltip-text*="选择你使用的货币"]')
btn.click()

text*= 一部分内容,通常容错好一些

2.2, 填入人数

截屏2022-05-12 下午6.09.09.png

btn = self.find_element(By.ID, "xp__guests__toggle")
btn.click()
decrease_btn = self.find_element(By.CSS_SELECTOR, 'button[aria-label="减少成人数量"]')
add_btn = self.find_element(By.CSS_SELECTOR, 'button[aria-label="增加成人数量"]')
valContainer = self.find_element(By.ID, "group_adults")
target = total
while True:
    #  get_attribute, receives a key name,
    #  then it tries to give back the value of whatever the attribute is
    count = valContainer.get_attribute("value")
    if int(count) == target:
        break
    elif int(count) > target:
        decrease_btn.click()
    else:
        add_btn.click()

拿到网站的人数数据,get_attribute("value")

少于目标,就 +

多了,就 -

2.3, 选择星级

截屏2022-05-12 下午6.11.41.png

star_box = self.driver.find_element(By.CSS_SELECTOR, 'div[data-filters-group="class"]')
for star_val in star_vals:
    star_child = star_box.find_element(By.CSS_SELECTOR, f'div[data-filters-item="class:class={star_val}"]')
    # 感觉, html 上的元素,都可以点击
    star_child.click()

先拿父节点,star_box

再拿子节点,star_child

算是,两级定位

3, booking.com 中的异步处理

3.1 使用上面提到的,sleep 大法

截屏2022-05-12 下午6.16.13.png

场景是,选完星级,选低价,

filter.apply_star_rating(4, 5)
time.sleep(5)
filter.sort_by_price_lowest_first()

如果不 sleep 下,价格排序,一般会把星级筛选,覆盖

3.2, web drive 刷新

场景是,完成筛选和排序的网络请求后,拿到最新的 html

drive.apply_filtrations()
# a workaround to let our bot to grab the data properly
drive.refresh()
drive.report_results()

点击星级筛选,价格排序,等待网页的网络请求刷新,

先刷新,

再去拿最新的 html

4,命令行辅助

mac 上,开启了很多 Chrome 实例,

怎么关?

kill -9 $(ps -x | grep "Google Chrome" | awk "{print $1}")

5, github repo

5.1 python 语法,传递多参数

函数定义

def apply_star_rating(self, *star_vals):

调用

filter.apply_star_rating(4, 5)
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-14 09:54:14  更:2022-05-14 09:56:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:50:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码