python常用方法

张开发
2026/4/19 19:00:54 15 分钟阅读

分享文章

python常用方法
序号作用1获取参数类型2控制台打印3遍历数组4定义变量并引用5定义方法6获取时间7连接数据库查询、添加8爬虫 BeautifulSoup库9三元表达式10获取uuid11字符串替换去空等12定时触发器1) 获取参数类型 |type(参数名) |print(type(param1))2控制台打印 |print(打印内容) |print(This is a test)3) 遍历数组 |for i in range(0,len(a)) |foriinrange(0,len(a)):print(a[i].get(href))4) 定义变量并引用 |声明引用变量直接引用变量|A定义变量hostport。注意变量类型注意“”host(127.0.0.1)#urlport(3306)#端口号#封装到类里方便继承classLoggerConfig():logger_namepython_apilogger_levelDEBUGlogger_filelog_my.txtB引用变量AfromreptileimportConfig this_hostConfig.host this_portConfig.port5) 定义方法 |声明引用方法直接引用方法|A定义变量testtest1。**注意参数类型deftest():print(This is a test)deftest1(name):print(This is a test by name:name)B引用方法AfrommethodSetimporttest,test1 test()test1(123)6) 获取时间 |importtime datetime.strftime(%Y-%m-%d %H:%M:%S,time.localtime(time.time()))importdatetime nowdatetime.datetime.now()tsnow.strftime(%Y-%m-%d %H:%M:%S)7) 连接数据库查询、添加 |importpymysqlfromreptileimportConfig#连接串sql_getTimes_baidu_hot_mainselect id from baidu_hot_main where address%s and describe %ssql_insert_baidu_hot_maininsert into baidu_hot_main(id,address,position,times,header,date,describe) values(%s,%s,%s,%s,%s,%s,%s)sql_insert_baidu_hot_content_batchinsert into baidu_hot_content (id,main_id,top,title,href,content,type,img) values(%s,%s,%s,%s,%s,%s,%s,%s)#查询当前访问次数defgetTimes(address,describe):try:#连接数据库dbpymysql.connect(hostConfig.host,#urlportConfig.port,#端口号userConfig.user,#数据库用户passwordConfig.password,#数据库密码databaseConfig.database#要连接的数据库名称)cursordb.cursor()#执行sql语句sumcursor.execute(sql_getTimes_baidu_hot_main,(address,describe))print(describedescribe;;;;addressaddress)#提交事务db.commit()print(查询次数成功)exceptExceptionase:print(e)#如果出现异常回滚db.rollback()print(查询次数失败)finally:#关闭数据库连接db.close()returnsum#插入表defsetMain(id,address,position,times,header,describe,date):try:#连接数据库dbpymysql.connect(hostConfig.host,#urlportConfig.port,#端口号userConfig.user,#数据库用户passwordConfig.password,#数据库密码databaseConfig.database#要连接的数据库名称)cursordb.cursor()#执行sql语句cursor.execute(sql_insert_baidu_hot_main,(id,address,position,times,header,date,describe))#提交事务db.commit()print(插入成功)exceptExceptionase:print(e)#如果出现异常回滚db.rollback()print(插入失败)finally:#关闭数据库连接db.close()return1#批量插入表defsetBatchContent(dataList):#连接数据库dbpymysql.connect(hostConfig.host,#urlportConfig.port,#端口号userConfig.user,#数据库用户passwordConfig.password,#数据库密码databaseConfig.database#要连接的数据库名称)#连接串cursordb.cursor()try:#执行sql语句cursor.executemany(sql_insert_baidu_hot_content_batch,dataList)#提交事务db.commit()print(插入成功)exceptExceptionase:print(e)#如果出现异常回滚db.rollback()print(插入失败)finally:#关闭数据库连接db.close()return1数据表字段词与python方法名冲突需要转译“”8) 爬虫 BeautifulSoup库 |使用爬虫爬取网页指定内容汇总 |#引入库importrequestsfrombs4importBeautifulSoup#爬虫方法#配置网页信息2url1https://top.baidu.com/board?tabrealtimeheaders1{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36}cookies1params1contentA1#sanRoot main div.container.right-container_2EFJr div div:nth-child(2) div responserequests.get(url,headersheaders)response.encodingutf-8#定义选择器soupBeautifulSoup(response.text,html.parser)asoup.select(contentA)foriinrange(0,len(a)):print(a[i])爬取每条打印值如下divclasscategory-wrap_iQLoo horizontal_1eKyQaclassimg-wrapper_29V76hrefhttps://www.baidu.com/s?wd%E9%AB%98%E6%A0%A1%E5%AD%A6%E7%94%9F%E6%AF%95%E4%B8%9A13%E5%B9%B4%E5%90%8E%E8%A2%AB%E6%92%A4%E9%94%80%E6%AF%95%E4%B8%9A%E8%AF%81amp;safyb_newsamp;rsv_dlfyb_newstarget_blankdivclassindex_1Ew5p c-index-bg2525/divimg altsrchttps://fyb-1.cdn.bcebos.com/hotboard_img/580a41001f1fbe34f2ce116bafa56f4c?x-bce-processimage/resize,m_fill,w_256,h_170/divclassborder_3WfEn/div/adivclasstrend_2RttY hide-icondivclassimg-wrap_JPOmE trend-icon_1Z3Cdimg src//fyb-pc-static.cdn.bcebos.com/static/asset/icon-same_886375f242bd1538af21a9721f16b170.png//divdivclasshot-index_1Bl1a2584879/divdivclasstext_1lUwZ热搜指数/div/divimgclassline_3-bzAsrc//fyb-pc-static.cdn.bcebos.com/static/asset/line-bg2x_95cb5a089159c6d5a959a596d460d60a.png/divclasscontent_1YWBmaclasstitle_dIF3Bhrefhttps://www.baidu.com/s?wd%E9%AB%98%E6%A0%A1%E5%AD%A6%E7%94%9F%E6%AF%95%E4%B8%9A13%E5%B9%B4%E5%90%8E%E8%A2%AB%E6%92%A4%E9%94%80%E6%AF%95%E4%B8%9A%E8%AF%81amp;safyb_newsamp;rsv_dlfyb_newstarget_blankdivclassc-single-text-ellipsis高校学生毕业13年后被撤销毕业证/divdivclassc-text hot-tag_1G080/div/a!--s-frag--divclasshot-desc_1m_jR small_Uvkd3 ellipsis_DupbZ近日西安工业大学发布一则《关于撤销陈华良毕业证书的公告》。公告显示毕业13年的陈华良因违反相关规定非法取得学籍被撤...aclasslook-more_3oNWChrefhttps://www.baidu.com/s?wd%E9%AB%98%E6%A0%A1%E5%AD%A6%E7%94%9F%E6%AF%95%E4%B8%9A13%E5%B9%B4%E5%90%8E%E8%A2%AB%E6%92%A4%E9%94%80%E6%AF%95%E4%B8%9A%E8%AF%81amp;safyb_newsamp;rsv_dlfyb_newstarget_blank查看更多gt;/a/divdivclasshot-desc_1m_jR large_nSuFU近日西安工业大学发布一则《关于撤销陈华良毕业证书的公告》。公告显示毕业13年的陈华良因违反相关规定非法取得学籍被撤销毕业证。aclasslook-more_3oNWChrefhttps://www.baidu.com/s?wd%E9%AB%98%E6%A0%A1%E5%AD%A6%E7%94%9F%E6%AF%95%E4%B8%9A13%E5%B9%B4%E5%90%8E%E8%A2%AB%E6%92%A4%E9%94%80%E6%AF%95%E4%B8%9A%E8%AF%81amp;safyb_newsamp;rsv_dlfyb_newstarget_blank查看更多gt;/a/div!--/s-frag--/div/div汇总方法#获取当前列的a标签下的hrefa[i].find(a).get(href)#获取当前列的a标签下的div文本内容a[i].find(a).find(div).text#获取当前列的a标签下的img的图片链接a[i].find(a).find(img).get(src)#获取当前列所有的div标签内容a[i].find_all(div)#获取当前列所有的div标签内容的第1条a[i].find_all(div)[0]#获取当前列class为hot-index_1Bl1a的div标签内容a[i].find(namediv,attrs{class:hot-index_1Bl1a})#获取当前列id为this_id的div标签内容a[i].find(namediv,attrs{id:this_id})9) 三元表达式 |(“C1”,“C2”)[boolean] |top(0,index)[len(index)!0]10) 获取uuid |uuid.uuid1() |uuid.uuid2()|uuid.uuid3()|uuid.uuid4()importuuid id2uuid.uuid1()11) 字符串替换去空等 |.replace(“”,‘’)|.strip()|#替换“查看更多”为空xxx.replace(查看更多,)#首尾去空格xxx.strip()12) 定时触发器 |sched定时模块|APScheduler定时框架|sched定时模块启动后间隔指定时间再次执行。importtimeimportschedfromreptile.controller.WebHandleControllerimportrunRepitlefromdatetimeimportdate,datetimedeftime_printer():print(定时任务启动datetime.now().strftime(%Y-%m-%d %H:%M:%S))# 注意 sched 模块不是循环的一次调度被执行后就 Over 了如果想再执行请再次 enterloop_monitor()defloop_monitor():ssched.scheduler(time.time,time.sleep)# 生成调度器 schedule.enter(delay, priority, action, arguments) 其中 delay:延迟执行任务的时间为0表示立即执行任务 priority:执行任务的优先级0为最大1234依次降低 action执行任务的函数名这里是printTime arguments:执行任务的函数参数格式为 (arg1,arg2,...,) 最后一定要有逗号没有参数就是() s.enter(60*60*1,0,time_printer,())s.run()# 启动位置if__name____main__:loop_monitor()APScheduler定时框架APScheduler是一个 Python 定时任务框架提供了基于日期、固定时间间隔以及 crontab 类型的任务并且可以持久化任务、并以 daemon 方式运行应用。安装$ pip install apschedulerAPScheduler 四个组件分别为触发器(trigger)作业存储(job store)执行器(executor)调度器(scheduler)。run_date: 在某天执行任务timezone: 在某段时间执行任务interval: 固定时间间隔触发weeks: 每隔几周执行一次 | weeks0days: 每隔几天执行一次 | days0hours: 每隔几小时执行一次 | hours0minutes: 每隔几分执行一次 | minutes0seconds: 每隔几秒执行一次 | seconds0start_date: 最早执行时间 | start_dateNoneend_date: 最晚执行时间 | end_dateNonetimezone: 执行时间区间 | timezoneNonecron: 在特定时间周期性地触发year: 4位数字month: 月 (1-12)day: 天 (1-31)week: 标准周 (1-53)day_of_week: 周中某天 (0-6 or mon,tue,wed,thu,fri,sat,sun)hour: 小时 (0-23)minute:分钟 (0-59)second: 秒 (0-59)start_date: 最早执行时间end_date: 最晚执行时间timezone: 执行时间区间具体实现fromdatetimeimportdate,datetimefromapscheduler.schedulers.blockingimportBlockingSchedulerdefmy_job(text):print(text)schedBlockingScheduler()# 1-1指定时间点执行一次# sched.add_job(my_job, date, run_datedatetime(2022, 7, 27, 13, 58, 00), args[text])# 1-2指定时间点执行一次# sched.add_job(my_job, date, run_date2009-11-06 16:30:05, args[text])# 2直接执行一次# sched.add_job(my_job, args[text])# 3从启动开始每两小时执行一次# sched.add_job(my_job, interval, hours2)# 4从2022-07-27 09:30:00到2022-08-15 12:00:00每4h执行一次sched.add_job(my_job,interval,hours2,start_date2022-07-27 09:51:00,end_date2022-08-15 12:00:00,args[datetime.now().strftime(%Y-%m-%d %H:%M:%S)爬取开始...])# 5of June, July, August, November and December at 00:00, 01:00, 02:00 and 03:00#sched.add_job(job_function, cron, month6-8,11-12, day3rd fri, hour0-3)# 6Runs from Monday to Friday at 5:30 (am) until 2014-05-30 00:00:00#sched.add_job(job_function, cron, day_of_weekmon-fri, hour5, minute30, end_date2014-05-30)sched.start()

更多文章