initial commit
commit
7971aafe10
@ -0,0 +1,2 @@
|
||||
NIX_CHROMIUM_PATH=<PATH/TO/CHROMIUM/INSIDE/NIX/STORE>
|
||||
ON_NIX="true"
|
@ -0,0 +1,7 @@
|
||||
# Node dependencies
|
||||
node_modules
|
||||
|
||||
# Local env files
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
@ -0,0 +1,10 @@
|
||||
{
|
||||
"printWidth": 80,
|
||||
"singleQuote": true,
|
||||
"quoteProps": "consistent",
|
||||
"tabWidth": 4,
|
||||
"semi": false,
|
||||
"arrowParens": "avoid",
|
||||
"proseWrap": "always"
|
||||
}
|
||||
|
@ -0,0 +1,39 @@
|
||||
# Weather Web-Scraper
|
||||
|
||||
An utility to scrape italian weather websites to collect and compare weather
|
||||
information
|
||||
|
||||
## Usage
|
||||
|
||||
> ![CAUTION]
|
||||
> The following utility is in EARLY developement. Many promises made in this
|
||||
> readme might not actually be true. Hopefully one day we'll be out of beta ~and
|
||||
> be releasing on time~
|
||||
|
||||
The scraper collects data and arranges in the following scheme
|
||||
|
||||
| Object field | Data Type | Unit of measurement | Meaning |
|
||||
| ------------ | --------- | ------------------- | ------- |
|
||||
| | | | |
|
||||
|
||||
> ![WARNING]
|
||||
> The script is configured to run on Nix, and because of this is more
|
||||
> complicated than it needs to be. You can remove unnecessary stuff if you're
|
||||
> not running this on nix
|
||||
|
||||
### Sources
|
||||
|
||||
These are the sources that are currently implemented or will be implemented
|
||||
eventually, together with the current level of implementation
|
||||
|
||||
```
|
||||
✅ = implemented
|
||||
🚧 = partially implemented
|
||||
⛔️ = Not implemented
|
||||
```
|
||||
|
||||
| Source | Status | Comments |
|
||||
| ---------------------------------------------------- | ------ | -------- |
|
||||
| [iLMeteo](https://www.ilmeteo.it) | ⛔️ | |
|
||||
| [3BMeteo](https://www.3bmeteo.com/) | ⛔️ | |
|
||||
| [Meteo Aeronautica Militare](http://www.meteoam.it/) | ⛔️ | |
|
@ -0,0 +1,25 @@
|
||||
require('dotenv').config()
|
||||
const puppeteer = require('puppeteer')
|
||||
|
||||
const NIX_OPS = {
|
||||
executablePath: process.env.NIX_CHROMIUM_PATH,
|
||||
}
|
||||
const opts = process.env.ON_NIX ? NIX_OPS : {}
|
||||
|
||||
const HOUR = 21
|
||||
|
||||
const fetchILMeteo = async () => {
|
||||
const browser = await puppeteer.launch(opts)
|
||||
const page = await browser.newPage()
|
||||
|
||||
await page.goto('https://www.ilmeteo.it/meteo/Pisa')
|
||||
|
||||
const weatherTable = await page.locator('.weather_table').waitHandle()
|
||||
const row = await weatherTable.$(`.forecast_1h[data-hour="${HOUR}"]`)
|
||||
const temp = await row.$('[data-value="temperatura"]')
|
||||
console.log(await temp?.evaluate(el => el.textContent))
|
||||
|
||||
await browser.close()
|
||||
}
|
||||
|
||||
fetchILMeteo()
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,6 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"dotenv": "^16.4.5",
|
||||
"puppeteer": "^23.6.0"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue