Skip to main content

Web tools and interfaces for Internet data processing.

Project description

webtoolkit

webtoolkit provides utilities and interfaces for processing and managing Internet data, including URL parsing, HTTP status handling, page type recognition (HTML, RSS, OPML), and support for integrating crawling systems.

Features

  • URL parsing and cleaning
  • HTTP status code classification
  • Page abstraction interfaces (HtmlPage, RssPage, OpmlPage, etc.)
  • Interfaces for integrating with crawling systems

Remote crawling is supported via crawler-buddy. Provides various crawlers and handlers using interfaces from this package.

Available on pypi.

Install by

pip install webtoolkit

Url parsing

Sanitize link and remove trackers:

link = UrlLocation.get_cleaned_link(link)

Extract domain name:

domain = UrlLocation(link).get_domain()

Parse link, returns parts of the link [TBD]. It should return .scheme .domain .location .args

location = UrlLocation(link)
parsed_data = location.parse_url()
link = location.join(parsed_data) - joins back parsed data into a link

Go up in link structure. First to parent location, then to domain, then to domain super.

location = UrlLocation(link).up()
UrlLocation(link).is_onion()

Page definitions

HTML pages

page = HtmlPage(url, contents)
page.get_title()
page.get_description()

RSS pages

page = RssPage(url, contents)
page.get_title()
page.get_description()
page.get_entries()

OPML pages

page = OpmlPage(url, contents)
page.get_entries()

Content processing

Extracts links from contents

ContentLinkParser().get_links()

Check if contents if captcha protected

ContentInterface().is_captcha_protected()

Obtain text ready for display

ContentText(text).htmlify()  # returns text, where http links are turned into HTML links
ContentText(text).noattrs()  # removes HTML attributes

Status analysis. Note that from some status we cannot know if page is OK, or not.

is_status_code_valid(status_code)   # provides information if input status code indicates the page is OK
is_status_code_invalid(status_code) # provides information if input status code indicates the page is invalid

Standard interfaces

Two standard interfaces

  • CrawlerInterface - Standard interface for crawler implementations
  • HandlerInterface - Allows implementing custom handlers for different use cases

Crawlers are different means of obtaining Internet data. Examples: requests, selenium, playwright, httpx, curlcffi. This package does not provide them, to make it more clean and neat.

Handlers are classes that allows automatic deduction of links, places, video codes from links, or data. Examples: youtube handler can use yt-dlp to obtain channel video list, or obtain channel ID, etc.

Default User agents

webtoolkit.get_default_user_agent()

Default User headers

webtoolkit.get_default_headers()

HTTP processing

Request HTTP object allows to make HTTP call.

request = PageRequestObject()

To send request to any scraping / crawling server just encode it to GET params

url_data = request_encode(request)

json_data = request_to_json(request)  # json
request = json_to_request(json_data)  # json

Check for valid HTTP responses:

PageResponseObject().is_valid()

Check for invalid HTTP responses:

PageResponseObject().is_invalid()

To check if response is captcha protected

PageResponseObject().is_captcha_protected()

Note: Some status codes may indicate uncertain results (e.g. throttling), where the page cannot be confirmed as valid or invalid yet.

Response communication is done via JSON

json_data = response_to_json(response)
response = json_to_response(json_data)

To obtain page contents object:

page = PageResponseObject().get_page()   # for example could be HtmlPage

Remote interfaces

You can implement scraping servers yourself. The communication between remotes use PageRequestObject and PageResponseObjects (and encoding them / converting to JSON).

  • RemoteServer - Interface for calling external crawling systems
  • RemoteUrl - Wrapper around RemoteServer for easy access to remote data

Testing

Provides data and facilities that will aid you in testing.

Do you want to implement new RSS parser? Go ahead, use the data.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

webtoolkit-0.0.68.tar.gz (377.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

webtoolkit-0.0.68-py3-none-any.whl (395.9 kB view details)

Uploaded Python 3

File details

Details for the file webtoolkit-0.0.68.tar.gz.

File metadata

  • Download URL: webtoolkit-0.0.68.tar.gz
  • Upload date:
  • Size: 377.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.11.2 Linux/6.12.20+rpt-rpi-v8

File hashes

Hashes for webtoolkit-0.0.68.tar.gz
Algorithm Hash digest
SHA256 69587af9ec0c1caa35e8db0f15c8299ea0c0829e3a6693d50d917e08b91fef6b
MD5 c8d30be3fd07d4678cfc841385dc1f88
BLAKE2b-256 1c25a224fc3793ea996a49f1098b02c4f59ea98169b71a055da93549ae4ef1b8

See more details on using hashes here.

File details

Details for the file webtoolkit-0.0.68-py3-none-any.whl.

File metadata

  • Download URL: webtoolkit-0.0.68-py3-none-any.whl
  • Upload date:
  • Size: 395.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.11.2 Linux/6.12.20+rpt-rpi-v8

File hashes

Hashes for webtoolkit-0.0.68-py3-none-any.whl
Algorithm Hash digest
SHA256 4a58ae952edc5e5708b65dd49d1dbc469525cfdf9bf48c236833148b74eb71fb
MD5 9492301559d6de163d24e11c4f572fbc
BLAKE2b-256 1b365c34a2f4b8bf28873e622d7fd0e8aa2d7e4d6d540da20558df25d6f64f8b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page