Scrapy contrib for Airflow
Installation
pip install airscrapy
Airflow Operator
This operator runs Scrapy directly within the worker process by invoking the Scrapy engine directly, eliminating the need for a separate process.
Example
If the spider is structured as follows:
import scrapy
class ExampleSpider(scrapy.Spider):
name = "example"
start_urls = [ "http://example.com" ]
def parse(self, response):
yield {
'text': response.css('.info').extract_first()
}
Here’s how you can create a DAG using the operator:
from airflow import DAG
from airscrapy import ScrapyOperator
from myscrapers.spiders.example import ExampleSpider
import os
with DAG(
dag_id="scrapers",
# Add extra settings like credentials or token
params={
"extra_settings": {
"CONCURRENT_REQUESTS": 2,
}
},
) as dag:
# Import the shared settings file
os.environ["SCRAPY_SETTINGS_MODULE"] = "myscrapers.settings"
task = ScrapyOperator(spider=ExampleSpider)
if __name__ == "__main__":
dag.test()
The extra_settings parameter is used to dynamically include elements
such as credentials or tokens, complementing the settings.py file.
Additionally, ensure you set the SCRAPY_SETTINGS_MODULE environment variable.
Without it, Scrapy won't be able to locate the settings.
The DAG directory is organized as follows:
dags
|- myscrapers
|- spiders
|- __init__.py
|- example.py
|- __init__.py
|- items.py
|- middlewares.py
|- pipelines.py
|- settings.py
|- mydag.py
|- scrapy.cfg
This structure enables us to run the DAG in local debugging mode:
python mydag.py
Build for publish
Install dependencies:
pip install build twine
Build the package:
python -m build --outdir dist
And publish to PyPi:
python -m twine upload dist/*
Metadata
Release files for airscrapy 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| airscrapy-1.0.1.tar.gz | 3.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| airscrapy-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.8 kB
Release files / airscrapy-1.0.1.tar.gz
| Download URL | airscrapy-1.0.1.tar.gz |
|---|---|
| Size | 3.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
669727bd1ce2027a934ea6d9d9c53c0557e0b350e60d6792bc117444435b96b4
|
|
BLAKE2b-256 checksum How to use checksums |
9bfc8f425779e7ea6e70bbdb4d3e47231d71311d89263ebfc362231c0c77f52f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.8
|
Release files / airscrapy-1.0.1-py3-none-any.whl
| Download URL | airscrapy-1.0.1-py3-none-any.whl |
|---|---|
| Size | 3.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4395d5f31e3032abb5a9e1485e3ba772b9c8827a6dc2b6784f9027af3bf63c5c
|
|
BLAKE2b-256 checksum How to use checksums |
2cfd9c07754456db5192e1eca07c450c1ac4bd4e7bdcc850587a64fb2b41af41
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.8
|
Security for airscrapy 1.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.