python+selenium连接数据库,利用sql查询出字段值,使用该字段值批量拼接成不同的url

一、代码示例

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
import urllib.parse
import time
import requests
import json

# 导入 pymysql 库,并创建一个数据库连接对象
import pymysql

max_retries = 120 # 设置最大尝试次数为120次
retry_interval = 1 # 设置每次尝试间隔为1秒
retries = 0 # 初始化尝试次数为0

while retries < max_retries:
    try:
        conn = pymysql.connect(
            host='rm-uf5mp.mysql.rds.aliyuncs.com',
            user='username',
            password='pasword',
            db='biaoming',
            charset='utf8mb4',
            connect_timeout=5
            )
        break
    except Exception as  e:
        print("连接失败:", e)  # 打印连接失败的原因
        retries += 1  # 尝试次数加1
        time.sleep(retry_interval)  # 等待一段时间再尝试

if retries == max_retries:
    print("连接超时,请检查数据库设置和网络状态") # 如果达到最大尝试次数,打印提示信息
    content = '连续尝试多次连接数据库均失败 '   # 定义报警信息
    FeishuTalk().sendTextmessage(content)  # 发送飞书报警

else:
    print("连接成功") # 如果连接成功,打印提示信息
    # 接下来执行您的查询和其他操作

if __name__ == '__main__':

    try:
        with conn.cursor() as cursor:
            # 定义 URL 前面的路径和 SQL 语句的字典
            url_sql_dict = {
                #'https://www.baidu.com?keyword={}&st=30',
                'https://www.baidu.com?keyword={}&st=0'
                #'https://www.baidu.com?keyword={}&st=4'
            }
            # 定义查询 name 字段的 SQL 语句
            sql = 'SELECT `name` FROM term_copy1 WHERE `status` IS NULL'
            # 查询 URL 链接部分路径的字段
            cursor.execute(sql)
            # 获取查询结果
            results = cursor.fetchall()
            # 遍历查询结果列表
            for result in results:
                name = result[0] # 获取 name 字段的值
                print(name) # 打印字段值
                # 遍历 URL 前面的路径和 SQL 语句的字典
                for url_prefix in url_sql_dict:
                    # 拼接 URL 链接部分路径
                    url = url_prefix.format(name) # 使用 format 方法替换占位符
                    # 检查 URL 是否正常
                    #driver = webdriver.Chrome(options=options)  # 找到浏览器驱动位置
                    driver = webdriver.Chrome()
                    #driver = webdriver.Chrome()
                    try:
                        if check_entries(driver, url):
                            print(url,'地址正常') # 打印检查结果
                        else:
                            print("URL 异常")
                            content = 'URL 异常,请检查 ' + url # 定义报警信息
                            FeishuTalk().sendTextmessage(content) # 发送飞书报警
                    except Exception as e:
                        print("URL 检查出错:", e)
                        content = 'URL 检查出错,请检查网络连接和驱动设置'
                        FeishuTalk().sendTextmessage(content)
    except Exception as e:
        print("查询出错:", e)
        content = '查询出错,请检查数据库连接和SQL语句'
        FeishuTalk().sendTextmessage(content)
        driver.quit()
        time.sleep(2)
    finally:
        conn.close()
        driver.quit()

上述代码通过SELECT `name` FROM term_copy1 WHERE `status` IS NULL这个sql查询出来的name值,将所有查询出来的值依次拼接成下面的url,例如若查询的name有2个值,分别为酒店,茶几,沙发,那么下面就会打开6个url,分别为

https://www.baidu.com?keyword=酒店&st=30
https://www.baidu.com?keyword=酒店&st=0
https://www.baidu.com?keyword=酒店&st=4

https://www.baidu.com?keyword=茶几&st=30
https://www.baidu.com?keyword=茶几&st=0
https://www.baidu.com?keyword=茶几&st=4

https://www.baidu.com?keyword=沙发&st=30
https://www.baidu.com?keyword=沙发&st=0
https://www.baidu.com?keyword=沙发&st=4

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值