39行Python代码的付费服务的盗版副本

图片
在执行电报机器人开发订单的过程中,我需要获取网页的屏幕快照,并将其交付给用户。 找到问题后,为什么要考虑解决问题的方法? 事实证明,不付款! 汗液中的katom更多。


因此,命运将我推向url2png服务。 一切似乎都很酷:您注册,获取API令牌并提出自己的请求。 但是无论如何。


图片


不,好吧,说真的, 几个电报机器人的VDS便宜! 然后对我来说很清楚,我必须以各种可行的方式走出去。 因为有Selenium之类的东西,所以我不必花很长时间思考 。 Selenium需要根据使用的浏览器安装特殊的驱动程序。 我警告您Selenium不再支持PhantomJS,因此google chrome将用于无头模式(当webdriver启动时)。 如何配置此VDS? 首先,您需要安装浏览器本身。 在控制台中,输入以下命令。


sudo apt update sudo apt install -y chromium-browser 

此链接之后,您需要找到最新版本的chromedriver(当前为2.41)。 您需要使用以下命令进行安装。


 wget https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip unzip chromedriver_linux64.zip sudo mv chromedriver /usr/bin/chromedriver sudo chown root:root /usr/bin/chromedriver sudo chmod +x /usr/bin/chromedriver 

我还要指出的是,如果您在俄罗斯,则要调试漫游器电报,必须在计算机上安装VPN。 现在您可以开始开发该机器人了。 您将需要以下库:


 pytelegrambotapi selenium validators 

您可以使用pip安静地安装它们。 脚本的开头看起来像这样。


 # -*- coding: utf-8 -*- import telebot import os import validators from selenium import webdriver 

首先,我创建了一个漫游器,并将浏览器设置为无头模式。


 #  token = 'token of this bot' bot = telebot.TeleBot(token, threaded = False) #      headless  options = webdriver.ChromeOptions() options.add_argument('--headless') options.add_argument('--disable-gpu') options.add_argument('--disable-dev-shm-usage') options.add_argument('--no-sandbox') 

然后,他向用户发布了问候和帮助。


 #   /start  /help @bot.message_handler(commands=['start']) def hello_user(message): bot.send_message(message.chat.id, 'Hello, ' + message.from_user.username + "!") @bot.message_handler(commands=['help']) def show_help(message): bot.send_message(message.chat.id, 'To get screenshot of webpage use command /getpng.\nExample: /getpng https://www.google.com') 

剩下的最重要的事情是获取屏幕截图。 验证程序库对用户输入的链接进行验证(对重言式表示抱歉)。 另外,使用os模块,屏幕截图在发送后会从服务器中删除,以免占用空间。


 #     selenium  headless chrome @bot.message_handler(commands=['getpng']) def get_screenshot(message): uid = message.chat.id url = "" try: url = message.text.split(' ')[1] except IndexError: bot.send_message(uid, 'You have not entered URL!') return if not validators.url(url): bot.send_message(uid, 'URL is invalid!') else: photo_path = str(uid) + '.png' driver = webdriver.Chrome(chrome_options = options) driver.set_window_size(1280, 720) driver.get(url) driver.save_screenshot(photo_path) bot.send_photo(uid, photo = open(photo_path, 'rb')) driver.quit() os.remove(photo_path) 

我们启动机器人并检查其运行!


 #  if __name__ == '__main__': bot.infinity_polling() 

图片


如您所见,一切正常。 当然,各种面包都可以修改,但是我为自己设定了建立基础并达到目标的目标。 实际上,有兴趣的人可以链接到bot ,有兴趣的人可以链接到 github存储库 。 同时,一切都很好,在下面的出版物中见!

Source: https://habr.com/ru/post/zh-CN420513/


All Articles