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.
-
websockets
A Haskell library for creating WebSocket-capable servers -
snap-core
Core type definitions (Snap monad, HTTP types, etc) and utilities for web handlers. -
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 -
PortFusion
Haskell-powered cross-platform transport-layer distributed reverse / forward proxy & tunneling solution – currently available for all TCP protocols (RDP, VNC, HTTP(S), SSH, ...). -
network-transport-zeromq
ZeroMQ transport for distributed-process (aka Cloud Haskell) -
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 -
HaskellNet
Haskell library which provides client support for POP3, SMTP, and IMAP protocols. -
graphula
A simple interface for generating persistent data and linking its dependencies -
http-streams
Haskell HTTP client library for use with io-streams -
http-types
Generic HTTP types for Haskell (for both client and server code) -
ngx-export
Nginx module for binding Haskell code in configuration files for great good! -
secure-sockets
A library for making secure connections between servers. -
network-transport-tcp
TCP Realisation of Network.Transport -
linklater
A Haskell library for the Slack API (including real-time messaging!) -
http-client-streams
http-client for io-streams supporting openssl
Access the most powerful time series database as a service
* 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