| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Scrappy.Scrape
Synopsis
- type ScraperT a = ParsecT Html () Identity a
- scrapeLinked :: forall s u (m :: Type -> Type) a. ParsecT s u m a -> ParsecT s u m [String]
- filterFromTextP :: ScraperT a -> ScraperT String
- filterPattern :: String -> ScraperT a -> String
- coerceMaybeParser :: Maybe a -> ScraperT a
- hoistMaybe :: forall (m :: Type -> Type) a. Applicative m => Maybe a -> MaybeT m a
- exists :: ScraperT a -> Html -> Bool
- scrape :: ScraperT a -> Html -> Maybe [a]
- scrapeFirst' :: ScraperT a -> Html -> Maybe a
- getFirstSafe :: Maybe [a] -> Maybe a
- getFirstFitSafe :: (a -> Bool) -> Maybe [a] -> Maybe a
- findFit :: (a -> Bool) -> [a] -> Maybe a
- runScraperOnHtml :: ParsecT String () Identity a -> String -> Maybe [a]
- runScraperOnHtmlIO :: (MonadIO m, Show a, Stream String m Char) => ParsecT String () m a -> String -> m (Maybe [a])
- scrapeIO :: (MonadIO m, Show a, Stream String m Char) => ParsecT String () m a -> String -> m (Maybe [a])
- runScraperInBody :: ParsecT String () Identity a -> String -> Maybe [a]
- skipToInBody :: forall s (m :: Type -> Type) u. Stream s m Char => ParsecT s u m ()
- runScraperOnBody :: ParsecT String () Identity a -> String -> Maybe [a]
- skipToBody :: forall s (m :: Type -> Type) u. Stream s m Char => ParsecT s u m ()
- runScraperOnHtml1 :: ParsecT String () Identity a -> String -> Maybe a
- scrapeFirst :: forall s (m :: Type -> Type) u a. Stream s m Char => ParsecT s u m a -> ParsecT s u m (Maybe a)
- findCount :: forall s (m :: Type -> Type) u a. Stream s m Char => ParsecT s u m a -> ParsecT s u m Int
- type Prefix' = String
- scrapeBracketed :: Prefix' -> ScraperT a -> Html -> Maybe [a]
- type Prefix = String
- scrapePrefixed :: Prefix -> ScraperT a -> Html -> Maybe [a]
Documentation
scrapeLinked :: forall s u (m :: Type -> Type) a. ParsecT s u m a -> ParsecT s u m [String] Source #
Generate a scraping expression where when found, it will generate and link in a data structure | to a relevant next pattern. For instance, an element of interest being found then switches the | scraper expression to be a reference to itselfo | | for instance (el "a" [("id", "x")]) -> let ALPHANUM = document.select(this) -> someThingUsing ALPHANUM_MATCH | in a statement --> which references [A, B, C]
coerceMaybeParser :: Maybe a -> ScraperT a Source #
Super common case analysis
hoistMaybe :: forall (m :: Type -> Type) a. Applicative m => Maybe a -> MaybeT m a Source #
getFirstSafe :: Maybe [a] -> Maybe a Source #
runScraperOnHtml :: ParsecT String () Identity a -> String -> Maybe [a] Source #
Find all occurences of a given parsing/scraping pattern
| e.g. getHtml' "https://google.ca" >>= return . runScraperOnHtml (el "a" []) , would give all a tag html elements on google.ca
runScraperOnHtmlIO :: (MonadIO m, Show a, Stream String m Char) => ParsecT String () m a -> String -> m (Maybe [a]) Source #
scrapeIO :: (MonadIO m, Show a, Stream String m Char) => ParsecT String () m a -> String -> m (Maybe [a]) Source #
scrapeFirst :: forall s (m :: Type -> Type) u a. Stream s m Char => ParsecT s u m a -> ParsecT s u m (Maybe a) Source #
findCount :: forall s (m :: Type -> Type) u a. Stream s m Char => ParsecT s u m a -> ParsecT s u m Int Source #