python 취미 도전 의 날씨 와 웨 이 보 검색 을 통 해 위 챗 친구 에 게 자동 으로 보 냅 니 다.
10130 단어 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 날씨 와 웨 이 보 검색 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.