Saravanan666/pypi-org huggingface dataset:
Package: page-objects
Page Objects are a testing pattern for websites. Page Objects model a page on
your site to provide accessors and methods for interacting with this page,
both to reduce boilerplate and provide a single place for element locators.This project is an implementation of this pattern for Python using Selenium
webdriver. It is agnostic to test harnesses and designed to help you build up
libraries of code to test your sites.Documentationhttps://page-objects.readthedocs.orgQuick Example>>> from page_objects import PageObject, PageElement
>>> from selenium import webdriver
>>>
>>> class LoginPage(PageObject):
        username = PageElement(id_='username')
        password = PageElement(name='password')
        login = PageElement(css='input[type="submit"]')
>>>
>>> driver = webdriver.PhantomJS()
>>> driver.root_uri = "http://example.com"
>>> page = LoginPage(driver)
>>> page.get("/login")
>>> page.username = 'secret'
>>> page.password = 'squirrel'
>>> assert page.username.text == 'secret'
>>> page.login.click()Installation$ pip install page_objectsProject HistoryThis was originally part of the pkglib project athttp://github.com/ahlmss/pkglib,
it has been forked to retain history.Release History1.1.0 (2014-10-15)Added feature: PageElements can now be contructed with contextDeprecated page_element and mutli_page_element factory methods1.0.1 (2014-09-30)Added PageObject.get(uri) method, based off of the page’s root_uri attribute.1.0.0 (2014-09-29)Initial export fromhttp://github.com/ahlmss/pkglib
Package: page-parser
项目简介项目名称：六行代码写爬虫英文名称：PageParser项目简介：一个爬虫使用的网页解析包，实现最大限度的代码复用项目目标：不懂网页解析也能写爬虫安装模块pip install page-parser最小项目示例：importrequestsfrompage_parserimportBaiduParser# 1、下载网页response=requests.get("https://www.baidu.com/")html=response.content.decode("utf-8")# 2、解析网页items=BaiduParser.parse_index(html)# 3、输出数据foriteminitems:print(item)# {'title': '百度一下，你就知道'}支持网页序号网站网页名称网页地址1百度主页https://www.baidu.com/2豆瓣电影 正在热映https://movie.douban.com/3拉勾招聘职位列表页https://www.lagou.com/zhaopin/4企查查融资事件页https://www.qichacha.com/elib_financing5西刺代理主页http://www.xicidaili.com/6西刺代理国内高匿代理http://www.xicidaili.com/nn/7西刺代理国内普通代理http://www.xicidaili.com/nt/8西刺代理国内HTTPS代理http://www.xicidaili.com/wn/9西刺代理国内HTTP代理http://www.xicidaili.com/wt/10搜狗搜索微信公众号搜索页https://weixin.sogou.com/weixin?type=1&query=百度11煎蛋网主页列表http://jandan.net/12伯乐在线python栏目http://python.jobbole.com/使用示例# -*- coding: utf-8 -*-importrequestsfrompage_parserimportBaiduParser# 1、下载网页url="https://www.baidu.com/"response=requests.get(url)response.encoding=response.apparent_encoding# 2、解析网页items=BaiduParser.parse_index(response.text)# 3、输出数据foriteminitems:print(item)# {'title': '百度一下，你就知道'}网络爬虫工作流程：页面下载器 -> 页面解析器 -> 数据存储页面下载器: 主要涉及防爬攻破，方法各异，爬虫的难点也在此页面解析器:
一般页面在一段时间内是固定的，每个人下载页面后都需要解析出页面内容，属于重复工作数据存储: 不管是存储到什么文件或数据库，主要看业务需求此项目就是将这项工作抽离出来，让网络爬虫程序重点关注于：网页下载，而不是重复的网页解析项目说明此项目可以和python 的requests 和scrapy 配合使用当然如果要和其他编程语言使用，可以使用flask等网络框架再次对此项目进行封装，提供网络接口即可发起人：mouday发起时间：2018-10-13需要更多的人一起来维护贡献代码贡献的代码统一放入文件夹：page_parser代码示例，如没有更好的理由，应该按照下面的格式，便于使用者调用baidu_parser.py# -*- coding: utf-8 -*-# @Date    : 2018-10-13# @Author  : Peng ShiyufromparselimportSelectorclassBaiduParser(object):"""
    百度网：https://www.baidu.com/
    """@staticmethoddefparse_index(html):"""
        解析主页：https://www.baidu.com/
        2018-10-13 pengshiyuyx@gmai.com
        :param html: {str} 网页文本
        :return: {iterator} 抽取的内容
        """sel=Selector(html)title=sel.css("title::text").extract_first()item={"title":title}yielditemif__name__=='__main__':importrequestsresponse=requests.get("https://www.baidu.com/")response.encoding=response.apparent_encodingitems=BaiduParser.parse_index(response.text)foriteminitems:print(item)# {'title': '百度一下，你就知道'}说明：原则：按照网站分类建立解析类解析方法包含在解析类中 为方便调用需要静态方法因为网页解析有时效性，所以必须注明日期命名规则：例如:文件名：baidu_parser
类名：BaiduParser
方法名：parse_index其他必要的代码注释必要的测试代码其他必要的代码加入我们基本要求python的基本语法 + 面向对象 + 迭代器（yield）掌握的库：requests、parsel、scrapy（了解即可）解析库统一使用parsel（基于xpath），简单高效，与scrapy无缝衔接不太懂也没关系，自己看参考文章，只要愿意学就会，瞬间提升自己参考文章：Python编程：class类面向对象Python编程：生成器yield与yield
from区别简单理解Python爬虫：requests库基本使用Python网络爬虫之scrapy框架Python爬虫：xpath常用方法示例python爬虫：scrapy框架xpath和css选择器语法联系方式PageParser QQ群号: 932301512
Package: pagerank
## Pranker* Pranker is a tool to track the page rank of keywords and domains over time.* It intends to be a free alternative to position.ly### Initial Goals* Support multiple users.* 1 or 2 requests a day.## MySQL-- Create local database.CREATE DATABASE prank DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;-- Grant remote access.CREATE USER 'prank'@'localhost' IDENTIFIED BY 'prank';SET PASSWORD FOR 'prank'@'localhost' = PASSWORD('prank');GRANT ALL ON root.* TO 'prank'@'localhost';FLUSH PRIVILEGES;## Backlog* Write instructions on how to run the project## Backlog* Upgrade django to 1.7.x* Parallelize requests to Google
Package: pager-cli
Overviewpagerduty cli to list/ack/resolve incidentsThis project was generated withcookiecutterusingjacebrowning/template-python.SetupRequirementsPython 3.7+InstallationInstall it directly into an activated virtual environment:$ pip install pager_clior add it to yourPoetryproject:$ poetry add pager_cliUsagecreate a file to store your API keycat ~/.pager_cli -p
userid: YOUR_USER_ID(eg:PBZDORP)
apikey: YOUR_API_KEYList and ACK the incident# pager_cli --helpUsage:pager_cli[OPTIONS]Consolescriptforpager_cli.Options:--actionTEXTActionlist/ack/resolve--configTEXTconfigfiledefault:~/.pager_cli--helpShowthismessageandexit.# pager_cli⠸Loading...🦾Noactiveincident
Package: pagerduty2splunk
This module allows you to take logs from PagerDuty and push them into Splunk for analysis.https://github.com/Sam-Martin/PagerDuty2SplunkInstallationProvided you have Python installed, you can simply run:pip install pagerduty2splunkExamplesRelative:Push logs between yesterday and three days ago to Splunk:pagerduty2splunk --log=INFO --start=1 --end=3 --splunk-token=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX  --splunk-instance-id=prd-X-XXXXX --pagerduty-token=XXX-XXXXXXXXXXXXXXXXAbsolute: Push logs from 2016-01-01 to 2016-01-05 to Splunk:pagerduty2splunk --log=INFO --start=2016-01-01 --end=2015-01-05 --splunk-token=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX  --splunk-instance-id=prd-X-XXXXX --pagerduty-token=XXX-XXXXXXXXXXXXXXXXArgumentssplunk-instance-idis the subdomain of your Splunk instance in Splunk cloudsplunk-tokenis the token of yourHTTP Event Collector.pagerduty-tokenis yourV2API token (seeGenerating an API Keyfor more details).
Package: pagerdutyapi
Very basic wrapper for PagerDuty APICurrent functionality:create trigger for known service key, with incident key,handle all documented errors,attach context (links, images) to trigger,logging functionality to send alerts to PagerDuty facilities,ability to add logging handler configurable from config dict,TODO:write tests for the above,write examples on how it is done,Possible further features:other functionality (not only sending alerts, but also reading/changing other
resources),convenience shortcuts for various frameworks,makepagerdutyapido not have dependencies exceptsix,Logging configurationLogging configuration can make use of this module. Sample dict config could
look like this:{
    'version': 1,
    'handlers': {
        'pagerduty': {
            'class': 'pagerdutyapi.handlers.PagerDutyHandler',
            'service_id': 'YOUR_SERVICE_ID',
            'level': 'ERROR',  # process only errors
        },
    },
    'loggers': {
        'pd_logger': {
            'propagate': True,  # call other loggers
            'handlers': ['pagerduty'],
        },
    },
}And then you could use it like this:import logging

logger = logging.getLogger('pd_logger')
logger.error(
    'Error level on instance %s above threshold: %s',
    instance_id,
    current_level,
)whereinstance_idandcurrent_levelare some variables.By default the incident will be created based on the template message (in this
case “Error level on instance %s above threshold: %s”), so it is important
to pass variable parts as positional arguments to logging method.Alternatively you could passincident_keyspecifically as part ofextraparam during logging call:logger.error(
    'Error level on instance %s above threshold: %s',
    instance_id,
    current_level,
    extra={
        'incident_key': 'THRESHOLD_ALERTS_INSTANCE_{}'.format(instance_id),
    },
)You can also override incident key during handler configuration:{
    ...
    'handlers': {
        'pagerduty': {
            'class': 'pagerdutyapi.handlers.PagerDutyHandler',
            'service_id': 'YOUR_SERVICE_ID',
            'incident_key': 'YOUR_INCIDENT_KEY',  # override incident keys
            'level': 'ERROR',  # process only errors
        },
    },
    ...
}This way, incident keys will be overwritten for all logging calls.
Package: pagerduty-api
pagerduty-apipagerduty-api is a package for easily interacting with PagerDuty’s API.Why?There are several other libraries interacting with the PagerDuty API, however none of them include
tests and documentation.InstallationTo install the latest release, type:pip install pagerduty-apiTo install the latest code directly from source, type:pip install git+git://github.com/ambitioninc/pagerduty-api.gitRequirementsPython 2.7, 3.3, 3,4requests >= 2.0.0DocumentationFull documentation is available athttp://pagerduty-api.readthedocs.orgLicenseMIT License (see LICENSE)
Package: pagerduty-auto-ack
pagerduty-auto-ackSometimes you can not acknowledge an incident manually, but you also can not really respond to it.
These are (and should be when you are on-call) usually short moments, taking about 15-20 minutes.
A good example here is taking a shower.
In such cases you may want to automatically acknowledge the incidents, to prevent loud notifications or calls from
disturbing other people.This script monitors the incidents that are assigned to you and acks them if needed.
At the end of execution (when stopped with C^c) it displays the incidents that it acknowledged.usage: pagerduty-auto-ack [-h] --pagerduty-api-key PAGERDUTY_API_KEY [--interval INTERVAL] [--urgency {high,low}]

Monitor and automatically ACKnowledge PagerDuty incidents

options:
  -h, --help            show this help message and exit
  --pagerduty-api-key   PAGERDUTY_API_KEY
  --interval INTERVAL   how often (in seconds) to run the check
  --urgency {high,low}  defaults to all urgenciesRequirementsIt requires a user-level API key to run.
This API key starts with theu+prefix and can be generated by following thePagerDuty API docs.How to run itFast and easy way is to usepipx:pipx install pagerduty-auto-ack
pagerduty-auto-ack --pagerduty-api-key <api_key>For development you can clone the repo and run the script withpoetry:poetry install
poetry run pagerduty-auto-ack --pagerduty-api-key <api_key>
Package: pagerdutyduty
A way to set schedules in PagerDuty that sort of approaches sane. Room for improvement exists.Schedule information is read in via YAML, and the resulting schedule is created in PagerDuty actual via overrides.Please viewpagerdutyduty –helpfor usage information and check outexamples/schedule.yamlfor example schedule configuration.InstallInstall via pip:pip install pagerdutyduty
Package: pagermaid
PagerMaidPagerMaid is a utility daemon for telegram.It automates a range of tasks by responding to commands issued to self.Update channel:https://t.me/PagerMaidInstallationSeeINSTALL.mdContactUse -contact  on telegram, and enter the PM that's opened, if you have installation problems email me atstykers@stykers.moeor message me on telegram at@KatOnKeyboard.Special ThanksAmine Oversoul
Package: pagermaid-modify
Pagermaid一个人形自走 bot用途Pagermaid 是一个用在 Telegram 的实用工具。它通过响应账号通过其他客户端发出的命令来自动执行一系列任务。更新频道：https://t.me/PagerMaid_Modify安装Ubuntu 16.04 手动搭建教程一键脚本Docker安装对存在使用本项目用户群组的提醒由于本项目需要响应账号通过其他客户端发出的命令，所以在本项目正常运行时，可能使用下列信息：用户信息姓名简介头像以及历史头像用户名用户id共同群组官方认证状态受限制状态用户类型群组信息标题群组类型群组id回复消息id用户名频道信息标题用户名频道id消息id消息发送者（如果有的话）文本文件图片贴纸以及会污染群组的操作记录，请群主或管理员提前声明禁止使用。如提醒不听，本项目组也没有办法，谁让这代码是开源的呢（隐私政策您在使用本项目代码时即表示您已经同意本隐私协议并且允许我们以评估负载和修复代码的目的记录您 bot 的在线状态和报错文件。除可能使用的信息之外，我们不会记录与收集任何信息。本项目代码完全遵循此隐私政策，您可以随时在此项目中审查我们的源代码。免责声明本项目无法承诺userbot行为不会被telegram官方滥权，也无法承诺所有功能能在自建项目上成功运行。使用userbot所带来的损失或可能产生的任何责任由搭建者自行承担。建议欢迎您加入本项目支持群，对于本项目用户，我们通常情况下可在支持群中予以提供搭建和使用帮助。特别提醒由于 userbot 的特殊性，请不要相信任何能够免费提供服务器给您搭建的人。尤其是需要保护好pagermaid.session，任何拥有此文件的人都可以进行包括修改二次验证密码、更改手机号等操作。与原作者联络您可以在搭建完毕后在 Telegram 客户端上使用 -contact  并点击链接进入通过 Pagermaid 自动打开的 PM ，如果您安装上出现了问题，请通过stykers@stykers.moe给我发电子邮件，或在 Telegram@KatOnKeyboard上给我发消息。特别感谢Amine Oversoul修改内容PagerMaid-Modify/README.mdPagerMaid-Modify/INSTALL.mdPagerMaid-Modify/some-plugins/autorespond.pyPagerMaid-Modify/some-plugins/yt-dl.pyPagerMaid-Modify/pagermaid/listener.pyPagerMaid-Modify/pagermaid/utils.pyPagerMaid-Modify/pagermaid/__main__.pyPagerMaid-Modify/pagermaid/__init__.pypagermaid-Modify/interface/__init__.pyPagerMaid-Modify/pagermaid/interface/__main__.pyPagerMaid-Modify/pagermaid/interface/views.pyPagerMaid-Modify/pagermaid/modules/account.pyPagerMaid-Modify/pagermaid/modules/avoid.pyPagerMaid-Modify/pagermaid/modules/captions.pyPagerMaid-Modify/pagermaid/modules/clock.pyPagerMaid-Modify/pagermaid/modules/external.pyPagerMaid-Modify/pagermaid/modules/fun.pyPagerMaid-Modify/pagermaid/modules/help.pyPagerMaid-Modify/pagermaid/modules/message.pyPagerMaid-Modify/pagermaid/modules/plugin.pyPagerMaid-Modify/pagermaid/modules/prune.pyPagerMaid-Modify/pagermaid/modules/qr.pyPagerMaid-Modify/pagermaid/modules/status.pyPagerMaid-Modify/pagermaid/modules/sticker.pyPagerMaid-Modify/pagermaid/modules/system.pyPagerMaid-Modify/pagermaid/modules/update.py
Package: pages
Pages is a command line static site generator.Piglet templates are used by default, but Jinja2, Chameleon, Genshi or Kajiki can all be used
supported, and content can be read from reStructuredText, markdown or JSON data
files.Quick startTo get up and running with the default configuration of Piglet + reStructuredText:pip install pages

pages --template layout.html --output build/ src/For markdown, or to use another templating system, install the relevant extras hook, eg:pip install pages[markdown,jinja2]ExamplesSelect individual files to render:pages --template layout.html -p1 --output=build/ src/index.md src/page1.mdSelect a different template for a file:pages --template layout.html -p1 --output=build/ src/ src/stats.json:report.htmlRead the list of files to render from stdin:find src/ -type f -name \*md | pages --template layout.html -p1 --output=build/Select a different templating system:pages --render-with jinja2 --template layout.html --output=build/ src/Load additional data into the template context:# Inline JSON
pages --template layout.html --context '{"foo": "bar"}' src/

# a JSON file
pages --template layout.html --context data.json  src/

# JSON loaded from a remote API
pages --template layout.html --context <(curl -s 'wttr.in/?format=j1') src/

# A python module
pages --template layout.html --context myproject.somemodule:avariable src/

# A python script
pages --template layout.html --context somevars.py src/Path strippingIf you supply a directory to pages, it will render all the files inside that directory, stripping off the directory name. For example given a file atsrc/index.rst, this:pages -t layout.html -o build/ src/will produce this:build/index.htmlIt will not strip the prefix of individually named files, so this:pages -t layout.html -o build/ src/index.rstwill produce this:build/src/index.htmlUse-p<n>/--strip<n>to tell pages to remove one or more levels of path prefix.-p1will strip off one level of prefix, higher values will strip off more.-p0will leave the path unmodified.Note that-p/--stripis only used for sources listed by full path names.Rendering markdownMarkdown sources are processed usingPython-Markdownwith the “extra”
and “meta”
extensions loaded.The template will be called with the following context variables:{
    "html": ...,  # Content rendered as HTML
    "meta": ...,  # Parsed metadata
}Rendering reStructuredTextreStructuredText sources make the following context variables available to the template:{
  "title": ...              # Document title
  "meta": ...               # Key-value pairs from top level field lists
  "html": ...               # Rendered html body (incl. the title heading)
  "html_without_title": ... # As above, but without the title heading
  "parts": ...              # Parts dict as returned by the docutils writer
}
Package: pages2pdf
pages2pdfIMPORTANT: You need your own Cloudconvert API Key to use this tool. You can get one for free atcloudconvert.com.
Not affiliated.QuickstartAdd your Cloudconvert API Key to .env:CLOUDCONVERT_API_KEY="ERTGIZTDIFGKDRztgITZdfGkzuf5i66tzfkVt6RFitzkujhgo67rtzfghT6rfiutzk"Convert all .pages files in the directory and its subdirectories to .pdf:python3-mpages2pdf.MoreGet helppython3-mpages2pdf--help
Package: pageshot
Take screenshot of specific URL.[![Circle CI](https://circleci.com/gh/mobify/pageshot.svg?style=svg&circle-token=<cirlce-ci-token>)](https://circleci.com/gh/mobify/pageshot)[![Coverage Status](https://coveralls.io/repos/mobify/pageshot/badge.svg?branch=master&service=github)](https://coveralls.io/github/mobify/pageshot?branch=master)# Examplesimport pageshots = pageshot.Screenshoter()
s.take_screenshot(”http://www.google.com”, “out.png”)# InstallingWe require phantomjs support.npm -g install phantomjsTo install, include this in requirements.txtgit+https://github.com/sketchytechky/pageshot.git# Running TestsRun test withpy.test –pep8To run test in watch modepy.test.watch – –pep8
# same with: ptw – –pep8
Package: pagesign
This module allows easy access to key management, encryption and signature functionality using age and minisign from Python programs. It is intended for use with Python 3.6 or greater.Releases are normally signed using a GnuPG key with the user idvinay_sajip@yahoo.co.ukand the following fingerprint:CA74 9061 914E AC13 8E66  EADB 9147 B477 339A 9B86As PyPI no longer shows signatures, you should be able to download release archives and signatures fromhttps://bitbucket.org/vinay.sajip/pagesign/downloads/The archives should be the same as those uploaded to PyPI.
Package: page-size-check
=========Page Size Check=========Page Size Check is an utility to check the size of pages from a sitemap and its resources parsering the HAR file of therequest using Selenium and haralyzer. The execution of this utility produces some files to allow the user to make ananalysis of the number of requests and its size. The execution use ThreadPoolExecutor to launch the browsers in parallel.Dependencies------------* Git.* Python 3.5 or higher, `pip`_ and virtualenvwrapper.* System requeriments in requirements-sys.txtInstallation------------Nowadays the project is only available on github.#. Clone project from repo ::git clone git@github.com:APSL/page-size-check.git#. Setup virtualenv Python ::cd page_size_checkmkvirtualenv "page_size_check" -p python3 -a .pip install -r requirements.txt#. Branches ::master --> prod env. Bug issues start from here.#. Download ::- Firefox webdriver for selenium: geckodriver- Browsermob-proxy#. Execution ::python page_size_check.py --sitemap_url="sitemap.url" [--help]#. Output ::- Resume urls file: a resume of the urls with the number of entries, the page size and the page load times- Resources list file: a list of the resources on every page with its mimetype, size and load time- Mimetype resources: a resume of the resources grouped by mimetype in each url of the sitemapUsage-----As was showned before, you can execute the script doing :code:`python page_size_check.py --help` to see all theparameters that you can set:--browsermob_server_path TEXT  Browsermob Server Path.--firefox_driver_path TEXT     Firefox Driver Path.--sitemap_url TEXT             Sitemap to get urls.--threads INTEGER              Number of threads.--help                         Show this message and exit.Contributing------------Contributions are very welcome. Please open a `pull request`_ or `file an issue`_.Tests will be ready as soon as posible, please ensure the coverage at least stays the samebefore you submit a pull request.License-------Distributed under the terms of the `MIT`_ license, "page-size-check" is free and open source softwareIssues------If you encounter any problems, please `file an issue`_ along with a detailed description... _`pip`: https://pypi.python.org/pypi/pip/.. _`pull request`: https://github.com/APSL/page-size-check/pulls.. _`file an issue`: https://github.com/APSL/page-size-check/issues.. _`MIT`: http://opensource.org/licenses/MIT
Package: pagesnap
PageSnap中文文档PageSnap is a tool that allows you to save web pages offline as single-page HTML files, preserving the original appearance of the web page as much as possible. It is developed using Python and Playwright, which means it can also save dynamic JavaScript web pages offline.The advantage of using single-page HTML format is that users can conveniently open and browse the files with any W3C-compliant browser.As a Python library, PageSnap can be easily added as a dependency to other projects. If your project uses Python and Playwright, simply import the PageSnap library to add offline-saving capabilities to your pages.Note: Currently, this project is still in the early stages of feature development and cannot be directly used as a library. The related APIs are still under development. You can keep an eye on the progress, or feel free to clone the project to try it out and share your thoughts.As a LibraryPageSnap provides an asyncio-based API. In your Playwright project, you can complete the offline saving of a page in just two steps. Here's an example code:# Step1: Hook page to intercept requests and save resources#        note: you can also hook after goto, but you may miss some resourcesawaithook_page(page)# Develop your code, doing your actionsawaitpage.goto(url)# It's better to wait for the page to be fully loadedawaitpage.wait_for_load_state("networkidle")# Step2: Get the page contentembedded_html=awaitpage_snap(page)# Then you can save it to a filewithopen(output_filename,'w',encoding='utf-8')asf:f.write(embedded_html)As a Command LineUse the following pip command to install:pip install pagesnapInitialize Playwright:playwright installStart using:pagesnap https://example.com/ test.htmlDiscussionIf you have any suggestions or improvements, please feel free to submit an issue or pull request. If you like this project, please give it a star.I am usually active onSina Weiboand welcome technical discussions there as well.
Package: pagestream
PageStreamSome scanners and PDF merge software results in a single merged PDF that has the
original document title in the outline. The dutch government uses software like
this to respond to FOIA requests.This module was created to split these FOIA requests by outline. As an
investigative journalism platform, we encounter different kinds of pagestreams
in the wild. The intent for this module is to be a place where we collect
different functionality regarding these streams.Example usage:pagestream --help
Package: page_tracker
===========Page Tracker===========Tracks a page and sends out email alerts if something changes in the tracked pagetest.py#!/usr/bin/env pythonimport page_trackerpage_tracker.track_page()=============configuration=============A config.JSON file has to be setup like so in the same directory as the file calling the track_page function like so{"gmail_id": <any gmail user id from which email alerts will be sent>,"gmail_password": <password of the id used to send out alerts>,"send_alert_to" : <any email id to which alerts will be sent >,"link_to_monitor": <link to monitor>,"time_interval": <time interval in seconds , takes integer values only >}