好的网站怎么设计,wordpress给图片添加alt属性,北京网站推广排名外包,营销推广的渠道安装 web driver#xff1a; 使用 driver 前#xff0c;需要下载与浏览器版本相对应的 driver。如要在 Chrome 浏览器上操作#xff0c;就要下载Chrome Driver。
几个常用浏览器的参考和下载地址#xff1a;
Edge Driver#xff1a;https://developer.microsoft.com/en…安装 web driver 使用 driver 前需要下载与浏览器版本相对应的 driver。如要在 Chrome 浏览器上操作就要下载Chrome Driver。
几个常用浏览器的参考和下载地址
Edge Driverhttps://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Chrome Driverhttps://sites.google.com/chromium.org/driver/ https://googlechromelabs.github.io/chrome-for-testing/
Firefox Driverhttps://github.com/mozilla/geckodriver/releases 这里使用Chrome浏览器下载Chrome Driver。 下载并安装完成后将.exe文件拷贝到 python.exe 同级的目录下。 引入将要使用到的库
from selenium import webdriver# By 里定义了许多常量用来标识以何种形式来查找元素如 By.CLASS_NAME 使用类名来查找
from selenium.webdriver.common.by import By# 主要用来等待确保页面加载、更新完成
import time 初始化驱动器
driver webdriver.Chrome()# 如果没有将driver.exe放到环境变量或python.exe同级目录下则要参数中指定
# driver webdriver.Chrome(F:/chromedriver.exe) 打开Chrome浏览器访问指定的网站
driver.get(http://www.cwl.gov.cn/fcpz/yxjs/ssq/)
time.sleep(3) # 等待3秒再继续确保页面加载完成 然后将窗口最大化
driver.maximize_window() 观察页面和控制台锁定目标阳光开奖的特征。 找到并点击 阳光开奖 链接继续等待3秒确保页面加载更新完成
# find_element 返回的是第一个匹配的元素
# By.XPATH 使用类似 xPath 的语法来定位页面的元素, 第二个参数是对应的 xPath 内容
driver.find_element(byBy.XPATH, value//div[data-aliasygkj]).click()
time.sleep(3) 此时浏览器会打开一个新的标签页我们需要将 driver 定位到新的标签页中
# 获取当前打开的几个窗口返回的是一个列表每个元素是每个标签页的标识
windows driver.window_handles# 切换到最新打开的窗口保证后面能正常获取页面中的元素
driver.switch_to.window(windows[-1]) 结合控制台和页面找到 往期开奖公告 的特征标识找到该元素并点击 # 点击往期开奖公告
# By.PARTIAL_LINK_TEXT 使用链接的文本内容来进行搜索后面的值是目标元素的innerText
driver.find_element(byBy.PARTIAL_LINK_TEXT, value往期开奖公告).click()
time.sleep(3) 然后尝试在界面执行一个脚本滚动到页面底部 # 滚动到最底部不是必须
# By.CLASS_NAME 使用类名来查找底部的图片 第二个参数是对应的类名
target driver.find_element(byBy.CLASS_NAME, valuefooter-logo)# 对于指定的元素执行脚本 这里的arguments[0]是第二个参数target
driver.execute_script(arguments[0].scrollIntoView({behavior:smooth}), target)
time.sleep(2) 然后找到下一页的按钮并点击进入下一页 # 下一页
# By.ID 指定使用 id 属性来查找元素第二个参数是id值
# 这里先试用id来找到祖父节点顺着该节点再继续往下找
paging driver.find_element(byBy.ID, valuepaging)
paging.find_element(byBy.CLASS_NAME, valuelayui-laypage-next).click()
time.sleep(2) 在当前界面的右上角有搜索功能尝试自动输入指定内容并搜索 # 在右上角的输入框中输入内容 使用ID来表示元素
# send_keys 在输入框中键入指定的内容即输入 2023-5
driver.find_element(By.ID, searchInput).send_keys(2023-5)
time.sleep(2)# 点击搜索按钮 先找父级在从父级找子元素
btnParent driver.find_element(By.CLASS_NAME, input-group-btn)
btnParent.find_element(By.CLASS_NAME, btn-default).click()
time.sleep(2) 点击搜索后会新创建一个标签页此时需要更新 driver 到新的标签页面。
# 及时切换窗口
windows driver.window_handles
driver.switch_to.window(windows[-1]) 点击第一个结果 # 点击第一个结果
items driver.find_elements(By.CLASS_NAME, con-item)
items[0].find_element(By.CLASS_NAME, black).click() 点击后同样会新开一个标签页此时我们把当前这个搜索结果的标签页关闭然后跳转到新的标签页中
# 关闭当前标签页并切换到新的窗口
driver.close()
windows driver.window_handles
driver.switch_to.window(windows[-1])
time.sleep(2) 如果要返回历史开奖结果页面
# 返回开奖历史记录
driver.switch_to.window(windows[-2]) 如果想给开奖结果截一个图元素截图
# 指定元素截图只截图当前浏览器窗口可见部分
main driver.find_element(By.CLASS_NAME, main)
main.screenshot(./caipiao_1.png) # 命名并保存 然后可以在当前的目录下查看 caipiao.png 图片 完整程序代码
from selenium import webdriver
from selenium.webdriver.common.by import By
import time# 初始化驱动器
driver webdriver.Chrome()
# 如果没有将driver.exe放到环境变量或python.exe同级目录下则要参数中指定
# driver webdriver.Chrome(F:/chromedriver.exe)# 访问指定网站
driver.get(http://www.cwl.gov.cn/fcpz/yxjs/ssq/)
driver.maximize_window() # 最大化窗口
time.sleep(3)# 点击阳光开奖 使用Xpath来搜索
driver.find_element(byBy.XPATH, value//div[data-aliasygkj]).click()
time.sleep(3)# 获取当前打开了几个窗口
windows driver.window_handles
# 会打开新的标签页因此需要切换到最新打开的窗口保证后面能正常获取元素
driver.switch_to.window(windows[-1])# 点击往期开奖公告 使用链接的文本内容来进行搜索
driver.find_element(byBy.PARTIAL_LINK_TEXT, value往期开奖公告).click()
time.sleep(3)# 滚动到最底部
target driver.find_element(byBy.CLASS_NAME, valuefooter-logo)
# 对于指定的元素执行脚本 这里的arguments[0]是第二个参数target
driver.execute_script(arguments[0].scrollIntoView({behavior:smooth}), target)
time.sleep(2)# 下一页 先试用id来找到祖父节点顺着该节点再继续往下找
paging driver.find_element(byBy.ID, valuepaging)
paging.find_element(byBy.CLASS_NAME, valuelayui-laypage-next).click()
time.sleep(2)# 在右上角的输入框中输入内容
driver.find_element(By.ID, searchInput).send_keys(2023-5)
time.sleep(2)# 点击搜索按钮
btnParent driver.find_element(By.CLASS_NAME, input-group-btn)
btnParent.find_element(By.CLASS_NAME, btn-default).click()
time.sleep(2)# 及时切换窗口
windows driver.window_handles
driver.switch_to.window(windows[-1])# 点击第一个结果
items driver.find_elements(By.CLASS_NAME, con-item)
items[0].find_element(By.CLASS_NAME, black).click()# 关闭当前标签页并切换到新的窗口
driver.close()
windows driver.window_handles
driver.switch_to.window(windows[-1])
time.sleep(2)# 返回开奖历史记录
driver.switch_to.window(windows[-2])# 指定元素截图只截图当前浏览器窗口可见部分
main driver.find_element(By.CLASS_NAME, main)
main.screenshot(./caipiao_1.png)input() # 保持程序运行状态浏览器不会被关闭 获取前三页的彩票中奖号码并写入到 Excel 中
需要安装 xlwings 来操作 Excelpip install xlwings
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
import xlwings as xwdriver webdriver.Chrome()
driver.get(http://www.cwl.gov.cn/ygkj/kjgg/)
sleep(2)driver.find_element(By.CLASS_NAME, ygkj_wqkjgg_nav).click()
sleep(2)# 保存结果
days []
qiu_list []def get_data(total_pages, current_page, file_name data):tbody driver.find_element(By.TAG_NAME, tbody)trs tbody.find_elements(By.TAG_NAME, tr)for tr in trs:tds tr.find_elements(By.TAG_NAME, td)days.append(tds[1].text)qiu_items tr.find_elements(By.CLASS_NAME, qiu-item)nums []for item in qiu_items:nums.append(item.text)qiu_list.append(nums)# 递归调用if current_page total_pages:# 下一页driver.find_element(By.CLASS_NAME, layui-laypage-next).click()get_data(total_pages, current_page 1)else:driver.quit() # 停止驱动器关闭网页# 创建一个不显示、不添加新的工作簿的 Excel 应用程序对象app xw.App(visibleFalse, add_bookFalse)# 创建了一个新的工作簿对象并将其赋值给 wb 变量。wb app.books.add()# 获取第一张表格sheet_1 wb.sheets[sheet1]sheet_1[A1].value 时间 # 设置A1单元格的内容for i in range(1, 7): # 设置 B1 ~ H1的内容sheet_1[f{chr(ord(A) i)}1].value f红{i}sheet_1[f{chr(ord(A) 7)}1].value 蓝for i in range(len(days)): # 填写内容sheet_1[fA{2 i}].value days[i]sheet_1[fB{2 i}:{chr(ord(B) 7)}{2 i}].value qiu_list[i]wb.save(f./{file_name}.xlsx) # 保存xlsxwb.close() # 关闭该工作簿对象app.quit() # 关闭应用程序print(successful.)if __name__ __main__:get_data(total_pages3, current_page1)参考
[1] Selenium Python 教程 - 知乎
[2] Python操作Excel的Xlwings教程一 - 知乎
[3] xlwings让excel飞起来
[4] Python 自动化操作 Excel 看这一篇就够了 - 知乎
[5] 定位策略 | Selenium