python 취미 도전 의 날씨 와 웨 이 보 검색 을 통 해 위 챗 친구 에 게 자동 으로 보 냅 니 다.

시스템 환경
1.python 3.8.2
2.webdriver(엣 지 구동 에 사용)
3.위 챗 컴퓨터 버 전
4.windows10
2.중국 날씨 망 에 올 라 가기
중국 날씨 망 의 웹 페이지 는 동태 적 으로 생 성 되 기 때문에 데 이 터 를 직접 얻 을 수 없습니다.먼저 webdriver 를 사용 하여 웹 페이지 를 열 고 렌 더 링 을 한 다음 에 웹 소스 코드 를 저장 하고 beautifulsoup 으로 데 이 터 를 분석 해 야 합 니 다.기어 오 르 는 데 이 터 는 실시 간 온도,최고 온도 와 최저 온도,오염 상황,풍향 과 습도,자외선 상태,옷차림 안내 8 가지 데 이 터 를 포함한다.

def getZZWeatherAndSendMsg():
	HTML1='http://www.weather.com.cn/weather1dn/101190201.shtml'
	driver=webdriver.Edge()
	driver.get(HTML1)
	soup=BeautifulSoup(driver.page_source,'html5lib')
	
	#      
	tem=soup.find('span',class_='temp').string
	#           
	maxtem=soup.find('span',id='maxTemp').string
	mintem=soup.find('span',id='minTemp').string
	#      
	poll=soup.find('a',href='http://www.weather.com.cn/air/?city=101190201').string
	#       
	win=soup.find('span',id='wind').string
	humidity=soup.find('span',id='humidity').string
	#       
	sun=soup.find('div',class_='lv').find('em').string
	#      
	cloth=soup.find('dl',id='cy').find('dd').string

	HTML2='http://www.weather.com.cn/weathern/101190201.shtml'
	driver.get(HTML2)
	soup=BeautifulSoup(driver.page_source,'html5lib')
	#      
	wea=soup.find_all('p',class_='weather-info')[1].string
	weatherContent='    :'+tem+'℃'+'
'+' :'+mintem+'~'+maxtem+'
'+' :'+wea+'
'+' :'+win+'
'+' :'+humidity+'
'+' :'+sun+'
'+' :'+poll+'
'+' :'+cloth+'
'+' !!' driver.quit() return weatherContent
3.웨 이 보 검색
중국 날씨 망 에 비해 웨 이 보 검색 은 매우 간단 하 다.직접 request 를 통 해 패 킷 을 얻 은 다음 에 beautiful 분석 을 사용한다.데 이 터 를 분석 한 후 for 순환 으로 텍스트 를 50 번 편리 하 게 저장 합 니 다.

def getWeibo():
	url='https://s.weibo.com/top/summary'
	headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36 Edg/90.0.818.41'}
	r=requests.get(url,headers=headers)
	r.raise_for_status()
	r.encoding = r.apparent_encoding
	soup = BeautifulSoup(r.text, "html.parser")
	tr=soup.find_all('tr')
	weiboContent='      :'+'
' for i in range(2,52): text=tr[i].find('td',class_='td-02').find('a').string weiboContent=weiboContent+str(i-1)+'"'+text+'"'+'
' return weiboContent
4.위 챗 자동 발송
win32gui 자동화 작업 을 사용 하여 위 챗 메 시 지 를 보 냅 니 다.먼저 위 챗 의 창 이름 으로 위 챗 핸들 을 찾 은 다음 에 아 날로 그 키 쥐 가 연락 처 를 검색 하고 연락처 창 을 열 어 메 시 지 를 보 내 고 창 을 닫 습 니 다.여러 개의 연락 처 를 동시에 보 낼 때 이 몇 가지 조작 을 직접 반복 할 수 있다.

if __name__=="__main__":
	target_a=['06:55','11:55','19:53']
	target_b=['07:00','12:00','19:54']
	name_list=['Squirrel B','Squirrel B']
	while True:
		now=time.strftime("%m %d %H:%M",time.localtime())
		print(now)
		if now[-5:] in target_a:
			base_weatherContent=getZZWeatherAndSendMsg()
			weiboContent=getWeibo()
		if now[-5:] in target_b:
			hwnd=win32gui.FindWindow("WeChatMainWndForPC", '  ')
			win32gui.ShowWindow(hwnd,win32con.SW_SHOW)
			win32gui.MoveWindow(hwnd,0,0,1000,700,True)
			time.sleep(1)
			for name in name_list:
				movePos(28,147)
				click()
				#2.        ,  ,        
				movePos(148,35)
				click()
				time.sleep(1)
				setText(name)
				ctrlV()
				time.sleep(1)  #          
				enter()
				time.sleep(1)
				now=time.strftime("%m %d %H:%M",time.localtime())
				weatherContent='   '+now+'
'+base_weatherContent setText(weatherContent) ctrlV() time.sleep(1) altS() time.sleep(1) setText(weiboContent) ctrlV() time.sleep(1) altS() time.sleep(1) win32gui.PostMessage(hwnd, win32con.WM_CLOSE, 0, 0) time.sleep(60)
소스 코드

import win32clipboard as w
import win32con
import win32api
import win32gui
import ctypes
import time
import requests
from urllib.request import urlopen
from bs4 import BeautifulSoup
from selenium import webdriver

#        
def setText(aString):
	w.OpenClipboard()
	w.EmptyClipboard()
	w.SetClipboardData(win32con.CF_UNICODETEXT,aString)
	w.CloseClipboard()
	
#  ctrl+V
def ctrlV():
	win32api.keybd_event(17,0,0,0) #ctrl
	win32api.keybd_event(86,0,0,0) #V
	win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0)#    
	win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)
	
#  alt+s
def altS():
	win32api.keybd_event(18,0,0,0)
	win32api.keybd_event(83,0,0,0)
	win32api.keybd_event(83,0,win32con.KEYEVENTF_KEYUP,0)
	win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0)
#   enter
def enter():
	win32api.keybd_event(13,0,0,0)
	win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0)
#    
def click():
	win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
	win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
#       
def movePos(x,y):
	win32api.SetCursorPos((x,y))

def getZZWeatherAndSendMsg():
	HTML1='http://www.weather.com.cn/weather1dn/101190201.shtml'
	driver=webdriver.Edge()
	driver.get(HTML1)
	soup=BeautifulSoup(driver.page_source,'html5lib')
	
	#      
	tem=soup.find('span',class_='temp').string
	#           
	maxtem=soup.find('span',id='maxTemp').string
	mintem=soup.find('span',id='minTemp').string
	#      
	poll=soup.find('a',href='http://www.weather.com.cn/air/?city=101190201').string
	#       
	win=soup.find('span',id='wind').string
	humidity=soup.find('span',id='humidity').string
	#       
	sun=soup.find('div',class_='lv').find('em').string
	#      
	cloth=soup.find('dl',id='cy').find('dd').string

	HTML2='http://www.weather.com.cn/weathern/101190201.shtml'
	driver.get(HTML2)
	soup=BeautifulSoup(driver.page_source,'html5lib')
	#      
	wea=soup.find_all('p',class_='weather-info')[1].string
	weatherContent='    :'+tem+'℃'+'
'+' :'+mintem+'~'+maxtem+'
'+' :'+wea+'
'+' :'+win+'
'+' :'+humidity+'
'+' :'+sun+'
'+' :'+poll+'
'+' :'+cloth+'
'+' !!' driver.quit() return weatherContent def getWeibo(): url='https://s.weibo.com/top/summary' headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36 Edg/90.0.818.41'} r=requests.get(url,headers=headers) r.raise_for_status() r.encoding = r.apparent_encoding soup = BeautifulSoup(r.text, "html.parser") tr=soup.find_all('tr') weiboContent=' :'+'
' for i in range(2,52): text=tr[i].find('td',class_='td-02').find('a').string weiboContent=weiboContent+str(i-1)+'"'+text+'"'+'
' return weiboContent if __name__=="__main__": target_a=['06:55','11:55','19:53'] target_b=['07:00','12:00','19:54'] name_list=['Squirrel B','Squirrel B'] while True: now=time.strftime("%m %d %H:%M",time.localtime()) print(now) if now[-5:] in target_a: base_weatherContent=getZZWeatherAndSendMsg() weiboContent=getWeibo() if now[-5:] in target_b: hwnd=win32gui.FindWindow("WeChatMainWndForPC", ' ') win32gui.ShowWindow(hwnd,win32con.SW_SHOW) win32gui.MoveWindow(hwnd,0,0,1000,700,True) time.sleep(1) for name in name_list: movePos(28,147) click() #2. , , movePos(148,35) click() time.sleep(1) setText(name) ctrlV() time.sleep(1) # enter() time.sleep(1) now=time.strftime("%m %d %H:%M",time.localtime()) weatherContent=' '+now+'
'+base_weatherContent setText(weatherContent) ctrlV() time.sleep(1) altS() time.sleep(1) setText(weiboContent) ctrlV() time.sleep(1) altS() time.sleep(1) win32gui.PostMessage(hwnd, win32con.WM_CLOSE, 0, 0) time.sleep(60)
6.운행 효과
在这里插入图片描述
7.총화
중국 날씨 망 데이터
웨 이 보 검색
위 챗 메시지 자동 발송exe 로 포장 하고 GUI 를 간단하게 쓰 세 요비교적 간단하게 썼 지만 쓰기 에 도 충분 하고 계속 쓰 는 것 도 귀 찮 으 니 참고 하 시기 바 랍 니 다.
github 주소
여기 서 python 취미 도전 의 날씨 와 웨 이 보 검색 을 통 해 위 챗 친구 에 게 자동 으로 보 내 는 글 을 소개 합 니 다.더 많은 관련 python 날씨 와 웨 이 보 검색 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기