Pokémon Dataset
收藏Pokémon Database Project
项目概述
该项目涉及从在线资源抓取宝可梦数据并存储在数据库中。它使用Perl进行后端脚本编写、数据库连接,并利用Mojo库进行网页抓取。
功能
- 抓取宝可梦数据:使用Mojo::UserAgent从外部源抓取宝可梦详情。
- 数据库集成:使用Perl的DBI将抓取的数据存储到PostgreSQL数据库中。
- 异步处理:使用Mojo::Promise实现异步操作,以提高数据获取效率。
- JSON处理:使用Mojo::JSON进行JSON数据的编码和解码,这对于数据存储和检索至关重要。
安装
要安装项目所需的依赖项,请使用cpanm和提供的cpanfile:
bash cpanm --installdeps .
配置指南
ENV配置
在项目的根目录中创建一个.env文件,包含以下数据库配置示例:
ini DB_HOST=localhost DB_PORT=5432 DB_USER=postgres DB_PASS=xxx DB_NAME=pokemondb
使用常量和配置
在配置PokemonScraper对象时,使用常量和指南以确保清晰度和可维护性:
常量
$BASE_URL:目标网站的基本URL(pokemondb.net)。$MAX_CONCURRENCY:抓取操作中允许的最大并发请求数。$MAX_POKEMON:要抓取数据的宝可梦最大数量。
配置PokemonScraper
在初始化PokemonScraper对象时,考虑以下指南:
- 用户代理列表:提供一个包含用户代理字符串的数组引用(
@user_agent_list),以在请求之间轮换,模拟多样化的用户行为。 - 最大宝可梦数量:调整
$MAX_POKEMON以指定每次抓取会话中要检索的宝可梦数据条目的最大数量。 - 最大并发数:设置
$MAX_CONCURRENCY以控制向网站发出的并发HTTP请求的数量。根据服务器容量和性能考虑调整此值。 - 数据库处理程序(
dbh):传递一个有效的数据库句柄($dbh),以允许PokemonScraper将抓取的数据插入数据库。
配置示例
perl
常量
my $BASE_URL = https://pokemondb.net; my $MAX_CONCURRENCY = 5; my $MAX_POKEMON = 100;
my @user_agent_list = ( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Edge/91.0.864.67 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/89.0", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" );
初始化PokemonScraper对象
my $scraper = PokemonScraper->new( user_agent_list => @user_agent_list, max_pokemon => $MAX_POKEMON, max_concurrency => $MAX_CONCURRENCY, dbh => $dbh, );
如何运行
初始化数据库模式和更改必要的数据库配置
bash perl init_db.pl
开始抓取
bash perl scrape.pl
免责声明
负责任的抓取实践
- 尊重网站政策:遵守目标网站(pokemondb.net)的服务条款和robots.txt,确保道德抓取实践。
- 使用延迟:在请求之间实施延迟,以防止服务器过载并模拟类似人类的浏览行为。




