Files
AI/참고/trafilatura-master/docs/usage-r.rst
2026-05-12 19:40:31 +09:00

179 lines
6.6 KiB
ReStructuredText

With R
======
.. meta::
:description lang=en:
Trafilatura extends its download and extractions capabilities to the R community.
Discover how to use Trafilatura in your R projects with this dedicated guide.
Introduction
------------
R is a free software environment for statistical computing and graphics. `Reticulate <https://rstudio.github.io/reticulate/>`_ is an R package that enables easy interoperability between R and Python. With Reticulate, you can import Python modules as if they were R packages and call Python functions from R.
This allows R users to leverage the vast array of Python packages and tools and basically allows for execution of Python code inside an R session. Python packages can then be used with minimal adaptations rather than having to go back and forth between languages and environments.
Installation
------------
Both R and Python installed on your system, for the latter see `installation page <installation.html>`_.
Reticulate
^^^^^^^^^^
The reticulate package can be easily installed from CRAN and then loaded into your R session:
.. code-block:: R
> install.packages("reticulate")
> library(reticulate)
A recent version of Python is necessary. Some systems already have such an environment installed, to check it just run the following command in a terminal window:
.. code-block:: bash
$ python3 --version
Python 3.10.12 # version 3.6 or higher is fine
By default, reticulate will use the Python executable found on your system's PATH. You can use the ``use_python()`` function to set the Python version and path that you want to use: ``use_python("/path/to/python/executable")``.
You can also use the ``py_config()`` function to check your current Python configuration.
Trafilatura
^^^^^^^^^^^
The most convenient way to install Python packages is to use the `reticulate::py_install() <https://rstudio.github.io/reticulate/reference/py_install.html>`_ function. Of course ``Trafilatura`` can also be installed with `pip <installation.html>`_ as any other Python package. Skip the installation of Miniconda if it doesn't seem necessary, you should only be prompted once; or see `Installing Python Packages <https://rstudio.github.io/reticulate/articles/python_packages.html>`_.
Here is a simple example using the ``py_install()`` function included in ``reticulate``:
.. code-block:: R
> library(reticulate)
> py_install("trafilatura")
Here is how to do it with the ``pip`` Python package manager:
.. code-block:: bash
$ pip install trafilatura
Once you have installed a Python package, you can use it from R with the ``import()`` function.
Download and extraction
-----------------------
This section demonstrates how to use functions in a R environment. Beyond the examples below, all functions in these documentation pages should be available as well.
R syntax
^^^^^^^^
Text extraction from HTML documents (including downloads) is available in a straightforward way:
.. code-block:: R
# getting started
> install.packages("reticulate")
> library(reticulate)
# loading the Trafilatura module
> trafilatura <- import("trafilatura")
# fetching a web page
> url <- "https://example.org/"
> downloaded <- trafilatura$fetch_url(url)
# extracting the text content
> text <- trafilatura$extract(downloaded)
> cat(text)
[1] "This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.\nMore information..."
# extraction with arguments
> trafilatura$extract(downloaded, output_format="xml", url=url)
[1] "<doc sitename=\"example.org\" title=\"Example Domain\" source=\"https://example.org/\" hostname=\"example.org\" categories=\"\" tags=\"\" fingerprint=\"lxZaiIwoxp80+AXA2PtCBnJJDok=\">\n <main>\n <div>\n <head>Example Domain</head>\n <p>This domain is for use in illustrative examples in documents. You may use this\ndomain in literature without prior coordination or asking for permission.</p>\n <p>More information...</p>\n </div>\n </main>\n <comments/>\n</doc>"
For a full list of arguments see `extraction documentation <corefunctions.html#extraction>`_.
Already stored documents can also be read directly from R, for example with CSV/TSV output and ``read_delim()``, see information on `data import in R <https://r4ds.had.co.nz/data-import.html>`_.
The ``html2txt`` function extracts all possible text on the webpage, it can be used as follows:
.. code-block:: R
> trafilatura$html2txt(downloaded)
Python syntax
^^^^^^^^^^^^^
You can also use Python functions and objects from R. For example:
.. code-block:: R
> py_run_string("import trafilatura")
> url <- "https://www.example.com"
> py_df <- py_run_string("trafilatura.extract(url)")
> df <- py_to_r(py_df)
Other functions
---------------
Specific parts of the package can also be imported on demand, which provides access to functions not directly exported by the package. For a list of relevant functions and arguments see `core functions <corefunctions.html>`_.
.. code-block:: R
# using the code for link discovery in sitemaps
> sitemapsfunc <- py_run_string("from trafilatura.sitemaps import sitemap_search")
> sitemapsfunc$sitemap_search("https://www.sitemaps.org/")
[1] "https://www.sitemaps.org"
[2] "https://www.sitemaps.org/protocol.html"
[3] "https://www.sitemaps.org/faq.html"
[4] "https://www.sitemaps.org/terms.html"
# and so on...
# import the metadata part of the package as a function
> metadatafunc <- py_run_string("from trafilatura.metadata import extract_metadata")
> downloaded <- trafilatura$fetch_url("https://github.com/rstudio/reticulate")
> metadatafunc$extract_metadata(downloaded)
$title
[1] "rstudio/reticulate"
$author
[1] "Rstudio"
$url
[1] "https://github.com/rstudio/reticulate"
$hostname
[1] "github.com"
# and so on...
Going further
-------------
By combining the web scraping capabilities of Trafilatura with the data analysis capabilities of R, you can create powerful workflows for extracting and analyzing data from web pages.
Further resources:
- Complete vignette: `Calling Python from R <https://rstudio.github.io/reticulate/articles/calling_python.html>`_.
- Tutorial showing how to import a Python scraper and use the results directly with the usual R syntax: `Web scraping with R: Text and metadata extraction <https://adrien.barbaresi.eu/blog/web-scraping-text-metadata-r.html>`_.
Working with the content:
- `Basic Text Processing in R <https://programminghistorian.org/en/lessons/basic-text-processing-in-r>`_