爬取情话网的思路引用了https://www.52pojie.cn/thread-1113388-1-1.html的帖子
然后用到了库pywin32模块获取QQ窗口并发送消息
代码如下:
'''
Data:2020/3/11
--- 大威锅 | DaWeiGuo ---
'''
import time
import requests
import re
import win32gui
import win32con
import win32clipboard as w
url='http://www.ainicr.cn/qh/'
#获取情话网内容
def getHtml(url,i):
try:
newurl=url + str(i) + '.html'
r = requests.get(newurl)
r.raise_for_status()
r.encoding = r.apparent_encoding
txt = re.findall('<p>(.*?)</p></a>',r.text)
#writetext(txt)
sendmessage(txt)#将获取的情话(此处是一个列表)送到sendmessage(发送消息)函数
except :
print("获取页面错误!")
# def writetext(txt):
# f = open('C:/Users/l1768/Desktop/情话.txt',"ab")
# sum=0
# for i in txt:
# sum=sum+1
# f.write((str(sum)+'、'+i).encode('utf-8'))
# f.write('\n'.encode('utf-8'))
# f.seek(2)
def main():
print("开始执行".center(20,'-'))
for i in range(1000,3000):
try:
time.sleep(10)#此处是获取情话网页面的间歇时间
getHtml(url,i)
print(i)#打印已经发送的情话到第几页
except :
print("错误!!!")
def sendmessage(txt):
for i in txt:
time.sleep(2)#此处是将爬取的情话写入本地的txt文件中
#发送的消息
msg = i#此处的i是字符串类型
#窗口名字
name = "Malloc()"#在引号里面填窗口的名称,有备注填备注,没有备注填网名,不要打开多个窗口,尽量只打开发信息的窗口和跑代码的窗口
#将测试消息复制到剪切板中
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_UNICODETEXT, msg)
w.CloseClipboard()
#获取窗口句柄
handle = win32gui.FindWindow(None, name)
#while 1==1:
if 1 == 1:
#填充消息
win32gui.SendMessage(handle, 770, 0, 0)
#回车发送消息
win32gui.SendMessage(handle, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
main()
'''
---使用方法---
代码用到了pywin32库,没有安装的,请自己先用pip命令安装,否则会出错!!!
执行代码之前打开你要发送消息的窗口,并讲name后面“”里面改为你要发送信息的窗口的名字
接下来点执行代码就ok啦
我已经将写入本地代码注释掉了
'''