scrape-changes alternatives and similar packages
Based on the "Networking" category.
Alternatively, view scrape-changes alternatives based on common mentions on social networks and blogs.
-
snap-core
Core type definitions (Snap monad, HTTP types, etc) and utilities for web handlers. -
websockets
A Haskell library for creating WebSocket-capable servers -
PortFusion
Haskell-powered cross-platform transport-layer distributed reverse / forward proxy & tunneling solution – currently available for all TCP protocols (RDP, VNC, HTTP(S), SSH, ...). -
snap-server
A fast HTTP server library, which runs Snap web handlers. -
call-haskell-from-anything
Call Haskell functions from any programming language via serialization and dynamic libraries -
HaskellNet
Haskell library which provides client support for POP3, SMTP, and IMAP protocols. -
io-streams
Simple, composable, and easy-to-use stream I/O for Haskell -
glirc
Haskell IRC library and console client - Join us on libera.chat #glirc -
network-transport-zeromq
ZeroMQ transport for distributed-process (aka Cloud Haskell) -
http-streams
Haskell HTTP client library for use with io-streams -
http-types
Generic HTTP types for Haskell (for both client and server code) -
secure-sockets
A library for making secure connections between servers. -
graphula
A simple interface for generating persistent data and linking its dependencies -
ngx-export
Nginx module for binding Haskell code in configuration files for great good! -
network-transport-tcp
TCP Realisation of Network.Transport -
linklater
A Haskell library for the Slack API (including real-time messaging!)
Static code analysis for 29 languages.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of scrape-changes or a related project?
README
scrape-changes
This library scrapes websites and invokes callbacks when there are changes, similar to a RSS reader. Sending an email by invoking sendmail is a built-in callback mechanism. Of course, users can provide their own callback function in addition.
If you need more control over the scraping process (e.g. for using another HTTP method than GET), just open an issue or file a PR.
Example usage
scrapeChangesJobs :: Either [(Url, [ValidationError])] (IO ())
scrapeChangesJobs = repeatScrapeAll [
-- Checks each minute for changes and sends a mail if there are any
ScrapeSchedule {
_scrapeScheduleCron = "* * * * *" -- std cron format
, _scrapeScheduleConfig = mailScrapeConfig "http://www.google.co.uk" -- to scrape
(MailAddr Nothing "[email protected]") -- from
(MailAddr Nothing "[email protected]" :| []) -- to
, _scrapeScheduleScraper = scrapeGoogleLogo --scrape function
}
-- Checks each minute for changes and notifies to syslog if there are any
, ScrapeSchedule {
_scrapeScheduleCron = "* * * * *"
, _scrapeScheduleConfig = otherScrapeConfig "http://www.google.co.uk"
(\text -> Logger.infoM thisLogger . show $
"Change detected: " <> text)
, _scrapeScheduleScraper = scrapeGoogleLogo
}
]
runJobs :: IO ()
runJobs = (Logger.errorM thisLogger . show) `either` id $ scrapeChangesJobs
Please look at scrape-changes-examples/examples.hs for a full working example