使用selenium爬取集信达官网服务日志

import json
from time import sleep
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By

# 2024022211 刘建强
class JiXinDa:
    def __init__(self):
        self.web=webdriver.Edge()
        self.web.maximize_window()
        self.url="https://jxd.itheima.net/#/login"

    def login_to_find(self):
        self.web.get(self.url)
        # 点击登录
        self.web.find_element(By.XPATH, '//*[@id="app"]/div/div/div[2]/div/button').click()
        # 点击短信服务
        self.web.find_element(By.XPATH, '//*[@id="app"]/div/div[1]/ul/li[2]/div/div').click()
        # 点击服务日志
        self.web.find_element(By.XPATH, '//*[@id="app"]/div/div[1]/ul/li[2]/ul/li/ul/li[5]').click()
        # 获取当前浏览器所有窗口句柄,该页面会切换页面句柄
        handles = self.web.window_handles
        # 切换新句柄,不然会导致element not interactable错误
        self.web.switch_to.window(handles[-1])
        # 点击重置
        self.web.find_element(By.XPATH,
                         "//*[@id='app']/div/div[2]/div[1]/div/div/div/div/div[3]/div[1]/form/div/div[5]/div/div/div/button[2]").click()
        # 输入关键词
        search_input = self.web.find_element(By.XPATH,
                                        "//*[@id='app']/div/div[2]/div[1]/div/div/div/div/div[3]/div[1]/form/div/div[1]/div/div/div/input")
        search_input.send_keys("闲云旅游")
        # 点击搜索
        self.web.find_element(By.XPATH,
                         "//*[@id='app']/div/div[2]/div[1]/div/div/div/div/div[3]/div[1]/form/div/div[5]/div/div/div/button[1]").click()

    def get_data(self):
        tables = []
        # 遍历数据
        trs = self.web.find_elements(By.XPATH,
                                "//*[@id='app']/div/div[2]/div[1]/div/div/div/div/div[3]/div[2]/div[1]/div[3]/table/tbody/tr")
        for i in trs:
            ths = i.find_elements(By.TAG_NAME, "td")
            tr_data = []
            for j in ths:
                text = j.text
                tr_data.append(text)
            table_data = {
                "序号": tr_data[0],
                "创建时间": tr_data[1],
                "通道名称": tr_data[2],
                "签名名称": tr_data[3],
                "模板名称": tr_data[4],
                "应用": tr_data[5],
                "耗时(秒)": tr_data[6],
                "状态": tr_data[7]
            }
            tables.append(table_data)
        sleep(5)
        # 下滑页面
        body = self.web.find_element('tag name', 'body')
        body.send_keys(Keys.PAGE_DOWN)
        sleep(2)
        page = self.web.find_element(By.XPATH, "//ul[@class='el-pager']/li[2]")
        page.click()
        sleep(3)
        # 遍历数据
        trs = self.web.find_elements(By.XPATH,
                                "//*[@id='app']/div/div[2]/div[1]/div/div/div/div/div[3]/div[2]/div[1]/div[3]/table/tbody/tr")
        for i in trs:
            ths = i.find_elements(By.TAG_NAME, "td")
            tr_data = []
            for j in ths:
                text = j.text
                tr_data.append(text)
            table_data = {
                "序号": tr_data[0],
                "创建时间": tr_data[1],
                "通道名称": tr_data[2],
                "签名名称": tr_data[3],
                "模板名称": tr_data[4],
                "应用": tr_data[5],
                "耗时(秒)": tr_data[6],
                "状态": tr_data[7]
            }
            tables.append(table_data)
        return tables

    def save_data(self,tables):
        # 输出JSON数据
        with open("jixinda.json", "w", encoding="utf-8") as f:
            json.dump(tables, f, ensure_ascii=False)
        print("保存成功")
        sleep(10)
        self.web.quit()

JiXinDa = JiXinDa()
JiXinDa.login_to_find()
JiXinDa.save_data(JiXinDa.get_data())

### 使用 Selenium 爬取 NBA 网站数据 #### 安装依赖项 为了启动此项目,需安装 Python 3.x 和 Geckodriver(适用于 Firefox 浏览器)。此外,还需安装 `requirements.txt` 中列出的一些 Python 库[^3]。 ```bash pip install selenium pandas requests beautifulsoup4 ``` #### 初始化 WebDriver 创建一个新的 Python 文件并导入必要的模块: ```python from selenium import webdriver import time ``` 初始化 Web 驱动程序实例,并设置隐式等待时间以便加载 JavaScript 渲染的内容: ```python driver = webdriver.Firefox(executable_path='/path/to/geckodriver') driver.implicitly_wait(10) # seconds ``` #### 访问目标 URL 并抓取数据 访问 NBA 的官方网站或任何包含所需信息的具体页面。例如,要获取最新的比赛得分表单页: ```python url = 'https://www.nba.com/scores' driver.get(url) time.sleep(5) # 给予额外的时间让动态内容完全加载完毕 html_content = driver.page_source ``` #### 解析 HTML 内容 利用 BeautifulSoup 来解析返回的 HTML 文档,提取感兴趣的元素,比如表格中的行记录: ```python from bs4 import BeautifulSoup soup = BeautifulSoup(html_content, "lxml") table_body = soup.find('tbody') rows = table_body.find_all('tr') for row in rows: columns = row.find_all('td') data_row = [ele.text.strip() for ele in columns] print(data_row) ``` #### 关闭浏览器会话 完成操作后记得关闭浏览器窗口以释放资源: ```python driver.quit() ``` 上述代码片段展示了如何配置和使用 Selenium 进行基本的数据采集工作流。对于更复杂的需求,则可能还需要考虑异常处理机制、登录验证流程等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值