AI와 단순성을 염두에두고 웹 스크레이퍼. 병렬화 될 수있는 CLI로 실행되며 고품질 마크 다운 컨텐츠를 출력합니다.
공유 :
스크레이퍼:
인덱서 :
# Install the package
python3 -m pip install scrape-it-now
# Run the CLI
scrape-it-now --help CLI (백엔드 서비스에 대한 인증 포함)를 구성하려면 환경 변수, .env 파일 또는 명령 줄 옵션을 사용하십시오.
응용 프로그램은 Python 3.13 이상으로 실행해야합니다. 이 버전이 설치되지 않은 경우 쉽게 설치하는 방법은 Pyenv입니다.
# Download the source code
git clone https://github.com/clemlesne/scrape-it-now.git
# Move to the directory
cd scrape-it-now
# Run install scripts
make install dev
# Run the CLI
scrape-it-now --helpAzure Blob Storage 및 Azure 대기열 스토리지를 사용한 사용 :
# Azure Storage configuration
export AZURE_STORAGE_ACCESS_KEY=xxx
export AZURE_STORAGE_ACCOUNT_NAME=xxx
# Run the job
scrape-it-now scrape run https://nytimes.com로컬 디스크 블로브 및 로컬 디스크 큐를 사용한 사용 :
# Local disk configuration
export BLOB_PROVIDER=local_disk
export QUEUE_PROVIDER=local_disk
# Run the job
scrape-it-now scrape run https://nytimes.com예:
❯ scrape-it-now scrape run https://nytimes.com
2024-11-08T13:18:49.169320Z [info ] Start scraping job lydmtyz
2024-11-08T13:18:49.169392Z [info ] Installing dependencies if needed, this may take a few minutes
2024-11-08T13:18:52.542422Z [info ] Queued 1/1 URLs
2024-11-08T13:18:58.509221Z [info ] Start processing https://nytimes.com depth=1 process=scrape-lydmtyz-4 task=63dce50
2024-11-08T13:19:04.173198Z [info ] Loaded 154554 ads and trackers process=scrape-lydmtyz-4
2024-11-08T13:19:16.393045Z [info ] Queued 310/311 URLs depth=1 process=scrape-lydmtyz-4 task=63dce50
2024-11-08T13:19:16.393323Z [info ] Scraped depth=1 process=scrape-lydmtyz-4 task=63dce50
...가장 빈번한 옵션은 다음과 같습니다.
Options | 설명 | Environment variable |
|---|---|---|
--azure-storage-access-key-asak | Azure Storage Access 키 | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | Azure Storage 계정 이름 | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | 블로브 제공 업체 | BLOB_PROVIDER |
--job-name-jn | 직업 이름 | JOB_NAME |
--max-depth-md | 최대 깊이 | MAX_DEPTH |
--queue-provider-qp | 대기열 제공 업체 | QUEUE_PROVIDER |
--save-images-si | 이미지 저장 | SAVE_IMAGES |
--save-screenshot-ss | 스크린 샷 저장 | SAVE_SCREENSHOT |
--whitelist-w | 화이트리스트 | WHITELIST |
사용 가능한 모든 옵션에 대한 문서화는 실행하십시오.
scrape-it-now scrape run --helpAzure Blob Storage와 함께 사용 :
# Azure Storage configuration
export AZURE_STORAGE_CONNECTION_STRING=xxx
# Show the job status
scrape-it-now scrape status [job_name]로컬 디스크 블로브 사용 :
# Local disk configuration
export BLOB_PROVIDER=local_disk
# Show the job status
scrape-it-now scrape status [job_name]예:
❯ scrape-it-now scrape status lydmtyz
{ " created_at " : " 2024-11-08T13:18:52.839060Z " , " last_updated " : " 2024-11-08T13:19:16.528370Z " , " network_used_mb " :2.6666793823242188, " processed " :1, " queued " :311}가장 빈번한 옵션은 다음과 같습니다.
Options | 설명 | Environment variable |
|---|---|---|
--azure-storage-access-key-asak | Azure Storage Access 키 | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | Azure Storage 계정 이름 | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | 블로브 제공 업체 | BLOB_PROVIDER |
사용 가능한 모든 옵션에 대한 문서화는 실행하십시오.
scrape-it-now scrape status --helpAzure Blob Storage, Azure 대기열 저장 및 Azure AI 검색 사용 :
# Azure OpenAI configuration
export AZURE_OPENAI_API_KEY=xxx
export AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME=xxx
export AZURE_OPENAI_EMBEDDING_DIMENSIONS=xxx
export AZURE_OPENAI_EMBEDDING_MODEL_NAME=xxx
export AZURE_OPENAI_ENDPOINT=xxx
# Azure Search configuration
export AZURE_SEARCH_API_KEY=xxx
export AZURE_SEARCH_ENDPOINT=xxx
# Azure Storage configuration
export AZURE_STORAGE_ACCESS_KEY=xxx
export AZURE_STORAGE_ACCOUNT_NAME=xxx
# Run the job
scrape-it-now index run [job_name]로컬 디스크 블로브, 로컬 디스크 큐 및 Azure AI 검색으로 사용 :
# Azure OpenAI configuration
export AZURE_OPENAI_API_KEY=xxx
export AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME=xxx
export AZURE_OPENAI_EMBEDDING_DIMENSIONS=xxx
export AZURE_OPENAI_EMBEDDING_MODEL_NAME=xxx
export AZURE_OPENAI_ENDPOINT=xxx
# Azure Search configuration
export AZURE_SEARCH_API_KEY=xxx
export AZURE_SEARCH_ENDPOINT=xxx
# Local disk configuration
export BLOB_PROVIDER=local_disk
export QUEUE_PROVIDER=local_disk
# Run the job
scrape-it-now index run [job_name]예:
❯ scrape-it-now index run lydmtyz
2024-11-08T13:20:37.129411Z [info ] Start indexing job lydmtyz
2024-11-08T13:20:38.945954Z [info ] Start processing https://nytimes.com process=index-lydmtyz-4 task=63dce50
2024-11-08T13:20:39.162692Z [info ] Chunked into 7 parts process=index-lydmtyz-4 task=63dce50
2024-11-08T13:20:42.407391Z [info ] Indexed 7 chunks process=index-lydmtyz-4 task=63dce50
...가장 빈번한 옵션은 다음과 같습니다.
Options | 설명 | Environment variable |
|---|---|---|
--azure-openai-api-key-aoak | Azure Openai API 키 | AZURE_OPENAI_API_KEY |
--azure-openai-embedding-deployment-name-aoedn | Azure Openai 임베딩 배포 이름 | AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME |
--azure-openai-embedding-dimensions-aoed | Azure Openai 임베딩 치수 | AZURE_OPENAI_EMBEDDING_DIMENSIONS |
--azure-openai-embedding-model-name-aoemn | Azure Openai 임베딩 모델 이름 | AZURE_OPENAI_EMBEDDING_MODEL_NAME |
--azure-openai-endpoint-aoe | Azure Openai 엔드 포인트 | AZURE_OPENAI_ENDPOINT |
--azure-search-api-key-asak | Azure Search API 키 | AZURE_SEARCH_API_KEY |
--azure-search-endpoint-ase | Azure Search Endpoint | AZURE_SEARCH_ENDPOINT |
--azure-storage-access-key-asak | Azure Storage Access 키 | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | Azure Storage 계정 이름 | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | 블로브 제공 업체 | BLOB_PROVIDER |
--queue-provider-qp | 대기열 제공 업체 | QUEUE_PROVIDER |
사용 가능한 모든 옵션에 대한 문서화는 실행하십시오.
scrape-it-now index run --help ---
제목 : Azure Storage를 사용한 스크랩 프로세스
---
그래프 lr
Cli [ "Cli"]
웹 [ "웹 사이트"]
하위 그래프 "Azure Deue Storage"
to_chunk [ "to Chunk"]
to_scrape [ "스크랩"]
끝
하위 그래프 "Azure Blob Storage"
하위 그래프 "컨테이너"
직업 [ "직업"]
스크랩 된 [ "스크랩 된"]
상태 [ "State"]
끝
끝
CLI- (1) PULL 메시지 -> TO_SCRAPE
CLI- (2) 캐시를 얻으십시오 -> 스크랩
CLI- (3) 찾아보기 -> 웹
CLI- (4) 업데이트 캐시 -> 스크랩
CLI- (5) 푸시 상태 -> 상태
CLI- (6) 메시지 추가 -> to_scrape
CLI- (7) 메시지 추가 -> to_chunk
CLI- (8) 업데이트 상태 -> 작업
---
제목 : Azure Storage 및 Azure AI 검색으로 스크랩 프로세스
---
그래프 lr
검색 [ "Azure AI Search"]
Cli [ "Cli"]
임베딩 [ "Azure Openai Embeddings"]
하위 그래프 "Azure Deue Storage"
to_chunk [ "to Chunk"]
끝
하위 그래프 "Azure Blob Storage"
하위 그래프 "컨테이너"
스크랩 된 [ "스크랩 된"]
끝
끝
CLI- (1) PULL 메시지 -> TO_CHUNK
CLI- (2) 캐시를 얻으십시오 -> 스크랩
CLI- (3) 청크 -> CLI
Cli- (4) embed-> 임베딩
CLI- (5) 검색 -> 검색을 푸시합니다
Blob Storage는 폴더로 구성됩니다.
[job_name]-scraping/ # Job name (either defined by the user or generated)
scraped/ # All the data from the pages
[page_id]/ # Assets from a page
screenshot.jpeg # Screenshot (if enabled)
[image_id].[ext] # Image binary (if enabled)
[image_id].json # Image metadata (if enabled)
[page_id].json # Data from a page
state/ # Job states (cache & parallelization)
[page_id] # Page state
job.json # Job state (aggregated stats)페이지 데이터는 API로 간주되며 (다음 주요 버전까지는 중단되지 않음) JSON 형식으로 저장됩니다.
{
"created_at" : " 2024-09-11T14:06:43.566187Z " ,
"redirect" : " https://www.nytimes.com/interactive/2024/podcasts/serial-season-four-guantanamo.html " ,
"status" : 200 ,
"url" : " https://www.nytimes.com/interactive/2024/podcasts/serial-season-four-guantanamo.html " ,
"content" : " ## Listen to the trailer for Serial Season 4... " ,
"etag" : null ,
"links" : [
" https://podcasts.apple.com/us/podcast/serial/id917918570 " ,
" https://music.amazon.com/podcasts/d1022069-8863-42f3-823e-857fd8a7b616/serial?ref=dm_sh_OVBHkKYvW1poSzCOsBqHFXuLc " ,
...
],
"metas" : {
"description" : " “Serial” returns with a history of Guantánamo told by people who lived through key moments in Guantánamo’s evolution, who know things the rest of us don’t about what it’s like to be caught inside an improvised justice system. " ,
"articleid" : " 100000009373583 " ,
"twitter:site" : " @nytimes " ,
...
},
"network_used_mb" : 1.041460037231445 ,
"raw" : " <head>...</head><body>...</body> " ,
"valid_until" : " 2024-09-11T14:11:37.790570Z "
}그런 다음 색인 데이터가 Azure AI 검색에 저장됩니다.
| 필드 | 유형 | 설명 |
|---|---|---|
chunck_number | Edm.Int32 | 청크 번호, 0 에서 x 까지 |
content | Edm.String | chunck 컨텐츠 |
created_at | Edm.DateTimeOffset | 소스 스크랩 날짜 |
id | Edm.String | chunck id |
title | Edm.String | 소스 페이지 제목 |
url | Edm.String | 소스 페이지 URL |
화이트리스트 옵션을 사용하면 도메인으로 제한하고 하위 경로를 무시할 수 있습니다. 정규 표현 목록입니다.
domain1,regexp1,regexp2 domain2,regexp3예를 위해 :
Whitelist learn.microsoft.com :
learn.microsoft.com Whitelist learn.microsoft.com 및 go.microsoft.com 이지만 /en-us 제외한 모든 하위 경로를 무시하십시오.
learn.microsoft.com, ^ /(?!en-us). * go.microsoft.com CLI를 쉽게 구성하려면 .env 파일에서 소스 환경 변수. 예를 들어 --azure-storage-access-key 옵션의 경우 :
AZURE_STORAGE_ACCESS_KEY=xxx 여러 값을 허용하는 인수의 경우 공간 분리 목록을 사용하십시오. 예를 들어 --whitelist 옵션의 경우 :
WHITELIST=learn . microsoft . com go . microsoft . com캐시 DirectOty는 운영 체제에 따라 다릅니다.
~/.config/scrape-it-now (unix)~/Library/Application Support/scrape-it-now (MACOS)C:Users<user>AppDataRoamingscrape-it-now (Windows)브라우저 바이너리는 각 실행시 자동 다운로드 또는 업데이트됩니다. 브라우저는 크롬이며 구성 가능하지 않습니다 (다른 브라우저가 필요한 경우 문제를 열십시오). 무게는 약 450MB입니다. 캐시는 캐시 디렉토리에 저장됩니다.
로컬 디스크 스토리지는 Blob 및 큐에 모두 사용됩니다. 쉽게 확장 할 수 없으며 결함 내성이 아니기 때문에 생산 사용에는 권장되지 않습니다. 테스트 및 개발 또는 Azure 서비스를 사용할 수없는 경우에 유용합니다.
구현:
응용 프로그램에서 프록시가 구현되지 않습니다. 응용 프로그램 수준에서 네트워크 보안을 달성 할 수 없습니다. VPN (예 : 타사) 또는 프록시 서비스 (예 : 주거용 프로시서, TOR)를 사용하여 익명 성을 보장하고 시스템 방화벽을 구성하여 응용 프로그램 네트워크 액세스를 제한하십시오.
응용 프로그램이 PYPI로 포장되므로 컨테이너로 쉽게 번들로 연결할 수 있습니다. 시작마다 응용 프로그램은 종속성 (브라우저 등)을 다운로드하여 캐시합니다. scrape-it-now scrape install 명령을 실행하여 사전 다운로드 할 수 있습니다.
성능을위한 좋은 기술은 또한 각각의 여러 컨테이너를 실행하여 스크래핑 및 인덱싱 작업을 병렬화하는 것입니다. 큐 스케일러를 구성하여 KEDA를 사용하여 달성 할 수 있습니다.