PlayWright 爬虫实战篇之Discord
-
之前群里有朋友说想用爬虫监控Discord的信息,我研究了一下午尚未实现;目前只能监控自己发出去的信息…不论如何,因为这次也是用到了一个新的工具,写一下使用感受吧。
一说到Python自动浏览器测试,很多朋友都会用Selenium,但是Selenium有个功能无法实现:它无法监听网页发出的网络请求。PlayWirght可以实现这一功能;
首先是安装
pip install playwright playwright install
然后就可以开始使用啦
from playwright.sync_api import sync_playwright with sync_playwright() as p: #headless = False用有头模式打开浏览器;可以让我们看到浏览器的页面 browser = p.chromium.launch(slow_mo=50, headless = False) context = browser.new_context(user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36') # 打开新的页面 page = context.new_page() # timeout是没有相应时自动关闭程序的时间;这里设置一个较大值 page.set_default_timeout(9000000) # 打开discord页面 page.goto('https://discord.com/channels/@me') #输入账号密码 page.type('input[name="email"]', "mengke.lyu@cass.city.ac.uk") page.type('input[name="password"]', "keke的密码") page.click('button[type="submit"]') #进入频道 page.goto("https://discord.com/channels/980001336294776842/980001336294776844") while (True): #如果网络请求中有messages这个字段 with page.expect_request("**messages**") as req: #那么开始尝试下列内容 try: if req.value is not None: print(req.value) if req.value.post_data_json is not None: print(req.value.post_data_json) print(req.value.post_data_json['content']) if req.value.post_data_json['content'] is not None: print(req.value.post_data_json['content']) #如果消息中有"mengke"这个字段,发出响声 if "mengke" in req.value.post_data_json['content']: playsound('./assets/mp3/any_other_way.mp3') except: pass
-
然后成功实现了自己发出有"mengke"字样的消息时会发出响声。目前先研究到这里;大家有什么思路也可以提出来;