Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cr00z/goinnogrnparser
Simple INN/OGRN parser on a gorutine workerpool
https://github.com/cr00z/goinnogrnparser
golang
Last synced: about 1 month ago
JSON representation
Simple INN/OGRN parser on a gorutine workerpool
- Host: GitHub
- URL: https://github.com/cr00z/goinnogrnparser
- Owner: cr00z
- Created: 2022-09-26T05:56:41.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2022-12-06T04:54:12.000Z (about 2 years ago)
- Last Synced: 2023-09-02T11:17:19.102Z (over 1 year ago)
- Topics: golang
- Language: Go
- Homepage:
- Size: 300 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# INN/OGRN parser
First steps in Go
Realised:
* CSV input/output
* 'Worker Pool' pattern with cancellation and correct shutdown
* Loop queue for url paths (multithread safe)
* Web Crawler: net/http + [jackdanger/collectlinks](https://github.com/jackdanger/collectlinks])
* INN / OGRN simple checks## Usage
First run:
`./goInnOgrnParser -i ../data/part.csv -o ../data/out.csv`
Help:
```
Usage of ./goInnOgrnParser:
-a get all numbers similar to inn and ogrn (lots of result = lots of garbage)
-d maximum parsing depth [default 1]
-f do not continue processing the link when the first result is received
-h http timeout, maximum server response time [default 10]
-i input csv file [default data/part.csv]
-o output CSV file, added result columns ('main_inn', 'main_ogrn', 'add_inn', 'add_ogrn') [default data/out.csv]
-s silence (ignored by verbose)
-t script execution limit in seconds [default 43200]
-v verbose output, added messages about processed urls, results, queue size, etc
-w worker pool size (number of threads) [default 10]
Use ^C for shutdown and save results.
Examples:
./goInnOgrnParser -a -d 3 -i in.csv -o out.csv -t 3600 -v -w 1000
```## Example of work
![work](https://github.com/cr00z/goInnOgrnParser/blob/main/images/image1.png)
## Output
В исходную таблицу добавляются 5 столбцов:
* main_inn - главный ИНН (из результатов первого сайта)
* main_ogrn - главный ОГРН (из результатов первого сайта)
* add_inn - дополнительные ИНН (уникальный список через разделитель "," полученные с остальных сайтов)
* add_ogrn - дополнительные ОГРН (уникальный список через разделитель "," полученные с остальных сайтов)
* http_error - если при парсинге возникла ошибка, в это поле будет записано ее обозначение:
* Response 4xx-5xx
* No such host
* Timeout
* Connection refused
* Connection reset by peer
* Network is unreachable
* Empty response
* SSL Protocol error
* Redirects
* No route to host
* для остальных ошибок - вся строка ошибки## Some results
1. Все похожее на ИНН/ОГРН (много мусора), парсинг только стартовой страницы
`./goInnOgrnParser -a -d 1 -i ../data/part.csv -o ../data/test_d1a.csv -t 43200 -v -w 250`
```
INFO 2022/09/07 12:11:54 Finished work 117698, left 0 urls [ 0 paths ]
INFO 2022/09/07 12:12:03 Founded 18526 results (18 %)
INFO 2022/09/07 12:12:03 Took ================> 40m26.305081978s
```2. Парсинг только стартовой страницы, на которой есть "ИНН" или "ОГРН"
`./goInnOgrnParser -d 1 -f -i ../data/part.csv -o ../data/test_d1.csv -t 43200 -v -w 250`
```
INFO 2022/09/07 12:55:54 Founded 5274 results (5 %)
INFO 2022/09/07 12:55:54 Took ================> 38m46.764405031s
```3. Все похожее на ИНН/ОГРН (много мусора), ссылки до третьего уровня
`./goInnOgrnParser -a -d 3 -f -h 30 -i ../data/part.csv -o ../data/test_d3a.csv -t 43200 -v -w 1000`
```
INFO 2022/09/07 14:15:52 Finished work 987893, left 16071 urls [ 3736288 paths ]
INFO 2022/09/07 14:15:52 Pool received cancellation signal, closing result channel
INFO 2022/09/07 14:15:52 All workers done, shutting done!
INFO 2022/09/07 14:15:55 Founded 37690 results (37 %)
INFO 2022/09/07 14:15:55 Took ================> 12h1m20.795452977s
```## Notes
Для запуска большого количества горутин может потребоваться увеличение лимита открытых файловых дескрипторов:
`ulimit -n 1048575`