Skip to main content

Lightweight web page crawler, extractor, and pipeline

Project description

Amina Group Page Scraper

this package is help you to get seo information on a webpage. the types are info are:

JSON-LD schema info

json ld schema is a graph which is used to define what is the web page and what can you find in this webpage. we use detectors to find info on page and categorize them.

Article

the types on page which are defined as article are

  • "Article"
  • "NewsArticle",
  • "TechArticle",
  • "ScholarlyArticle",
  • "BlogPosting",
  • "Report",
  • "Blog"

these types on page are identified as article

Contact and About

for contact pages we have

  • "ContactPage"
  • "AboutPage"

Domain and Organization

for pages which are root of the domain we have domain info and organization which are specify the brand of the page

for example name of organization which have url is identified as brand name of the website

Other Types

  • navigation
  • person
  • product
  • service
  • category

are other types which we identify as ld json schema all these are gathered as ENTITY

Entity

entity is a data type we provide which have these fields

  • id: (string)
  • name: (string) can be null
  • type: (string) this field defined by type detectors which are explained above
  • alternate_name: (string) can be null
  • url: (string) can be null
  • description: (string) can be null
  • raw: (dictionary)
  • date_published: (date time) can be null
  • date_modified: (date time) can be null

usage

#import Entity pipeline
from page_scraper import EntityPipeline

#import detectors you need
from page_scraper import ArticleDetector,DomainDetector

#import http fetcher and parser to fetch the page correctly and parse the html
from page_scraper import HttpFetcher, PageParser

from page_scraper import build_page_context

#from builders import page builder

# define url
url = "https://amina-group.com/"

# get and parse the page to create a Page instance
fetcher = HttpFetcher()
parser = PageParser()
fetched_url = fetcher.get(url)
parsed_info = parser.parse(fetched_url)
# create page instance using build_page_context
page = build_page_context(parsed_info)

# create pipeline with detectors you want
pipeline = EntityPipeline(
    [
        ArticleDetector(),
        DomainDetector(),
    ]
)

# run the pipeline using page
pipeline.run(page)

Link scrape

we let you classify the links on page but first before using this you need to add Beautiful soup object as soup property of the page

BeautifulSoup instance

from bs4 import BeautifulSoup

page.soup = BeautifulSoup(fetched_url.content, "html.parser")

links of the page

every url in page (except the links on ld json) are stored as UrlContext data type

for main urls we have:

  • canonical (stores as canonical property of page as well)
  • navigation
  • internal

you can use scraper pipeline to get each or all urls

usage

# import pipeline
from page_scraper import ScraperPipeline

# import scrapers
from page_scraper import GetNavLinks(),InternalScraper(),CanonicalScraper()

# create pipeline
scrape_pipeline = ScraperPipeline([
    GetNavLinks(),
    InternalScraper(),
    CanonicalScraper(),
])

# now use page and remember page soup property must be set
scrape_pipeline.run(page)

Content Scrape

what need of content is headers from h1,h2,h3,h4,h5,h6 we want links and the type of links images videos audios

headings

headings are also have a data type which is PageHeading and after scraping each heading stored as PageHeading instance

the page have a property named headings page.headings and heading scraper stores heading of the page to this property

media tags

media tags are also url and they will be treated as UrlContext as well the media types are:

  • image
  • video
  • audio

each media tag in url context define as {meida_name}_TAG for example IMAGE_TAG for image

you can get the video of a page with 3 different ways

  1. video tag
  2. iframe
  3. embed or object tag

NOTE: you cannot get iframe by a normal url fetcher because iframe will only loads if javascript available.

usage

# import pipeline
from page_scraper import ContentPipeline

# import scrapers
from page_scraper import HeadingScraper(),\
    ImageScraper(),VideoTagScraper(),AudioTagScraper(),\
    VideoIframeScraper(),VideoEmbedScraper()

# create pipeline
content_pipeline = ContentPipeline([
    HeadingScraper(),
    ImageScraper(),
    VideoTagScraper(),
    AudioTagScraper(),
    VideoIframeScraper(),
    VideoEmbedScraper()
])

# now use page and remember page soup property must be set
content_pipeline.run(page)

Meta Scrape

in meta scrape we get page required meta such as robots (index and follow) status of page. meta title and meta description social tags (og:) page type and site name.

some scrapers of this pipeline have direct effect to properties of PageContext like is_title which means the title tag found in title tag

first lets explain each scraper

Title Scraper

this scraper tries to get page title from title tag.

if title tag found in page is_title property of page will be sets to true (it's false by default)

Description scraper

this scraper tries to find meta title with name "description".

if meta description found in page is_description property of page will be sets to true (it's false by default)

Robots scraper

sets page is_index and is_follow properties

Social scraper (OG)

social scrapers defines social title, description, site name, modified time and page type

usage

usage

# import pipeline
from page_scraper import ContentPipeline

# import scrapers
from page_scraper import TitleScraper(),RobotScraper(),DescriptionScraper(),\
            OgTitleScraper(),OgDescriptionScraper(),OgTypeScraper(),\
            OgSiteNameScraper(),ModifiedTimeScraper()

# create pipeline
content_pipeline = ContentPipeline([
    TitleScraper(),
    RobotScraper(),
    DescriptionScraper(),
    OgTitleScraper(),
    OgDescriptionScraper(),
    OgTypeScraper(),
    OgSiteNameScraper(),
    ModifiedTimeScraper()
])

# now use page and remember page soup property must be set
content_pipeline.run(page)

Project details


Download files

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

Source Distribution

amina_page_scraper-0.1.0.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

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

amina_page_scraper-0.1.0-py3-none-any.whl (25.1 kB view details)

Uploaded Python 3

File details

Details for the file amina_page_scraper-0.1.0.tar.gz.

File metadata

  • Download URL: amina_page_scraper-0.1.0.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for amina_page_scraper-0.1.0.tar.gz
Algorithm Hash digest
SHA256 fc8a9facb59915f3e1efaf5c60f5a857e757285a0e46459e915e3fcbc9433606
MD5 64dac160c259a4ea01ec431177df6e53
BLAKE2b-256 1591c0eedd30ec66a79a431981688ead394c9acf48c847c4b19b7c5b2ca69962

See more details on using hashes here.

File details

Details for the file amina_page_scraper-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for amina_page_scraper-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 940839bb3a372d631457269dee62608c433b50c880f524372b608087ddb1a7f9
MD5 34503b667b0faed814e9c7c61d705df8
BLAKE2b-256 674d2e8d2c440a1ace7732606bb5c02091b5ed4c71ad47898f6879bcdfbfc948

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