#web-crawler #common-crawl
#веб-сканер #обычный обход #общий-сканирование
Вопрос:
Я пытаюсь собрать всю доступную текстовую информацию (насколько это возможно) с веб-страниц на узбекском языке (для моего исследования). Каков наилучший способ сделать это?.
Я нашел общий способ обхода, но не уверен, легко ли извлечь текст на определенном языке.
Комментарии:
1. некоторые порталы используют название языка в URL — ie.
../gb/...
— или в качестве параметров — ie.?lang=gb
. Они также могут хранить это в некоторых файлах cookie. Веб-браузер должен отправить заголовок Accept-Language с языком (языками), которые вы установили в настройках браузера, и портал может использовать эту информацию. Таким образом, каждый портал может использовать другой метод.2. С августа 2018 года общие архивы сканирования предоставляют языковые аннотации , что упрощает поиск страниц на определенном языке. Каждый месяц просматривается около 300 000 страниц на узбекском языке ( 0,01% всех страниц ). На Java и Python есть образцы для извлечения содержимого по языкам с помощью SQL и Spark.
Ответ №1:
Существует множество способов, которыми вы можете достичь этого. Например, недавно я создал поисковый робот, используя Java Jsoup, из которого я извлекал контент на нескольких языках. Я проанализировал шаблон URL, содержащий local: en-GB, en-US и т.д.
введите описание изображения здесь Каждый URL-адрес содержит Local, поэтому, если вы хотите перейти только на определенный язык, обязательно установите флажок local для требуемого языка и создайте фильтр, который будет улавливать только нужные ссылки.
Ответ №2:
Я извлек все страницы на языке телугу из общих данных обхода с помощью одной команды.
$ duckdb -c """
LOAD httpfs;
LOAD parquet;
SET s3_region='us-east-1';
SET s3_access_key_id='s3_secret_access_key';
SET s3_secret_access_key='s3_secret_access_key';
COPY (select * from PARQUET_SCAN('s3://commoncrawl/cc-index/table/cc-main/warc/crawl=CC-MAIN-2022-40/subset=warc/*.parquet') where content_languages ilike '%tel%') TO 'telugu.csv' (DELIMITER ',', HEADER TRUE);
"""
Общий обход начал предоставлять языковые аннотации к индексным файлам. Duck db может считывать паркетные файлы, удаленные файлы, а также серию паркетных файлов.
С помощью расширений parquet
amp; httpfs
мы можем прочитать весь общий индекс обхода сразу с помощью приведенной выше команды.
Перед запуском команды установите duckdb и его расширения.
$ brew install duckdb
$ duckdb -c 'INSTALL parquet;'
$ duckdb -c 'INSTALL httpfs;'
Я также написал подробное сообщение в блоге об извлечении подмножества данных CC.