You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Perl提取Autotrader网站searchVehicle表单的<option>字符串值?

提取Autotrader网站searchVehicle表单指定下拉列表的

嘿,我来帮你完善这段Perl代码,实现提取Autotrader网站指定下拉列表的

实现思路

  • 先用WWW::Mechanize加载目标页面,定位到searchVehicle表单
  • 筛选出name属性匹配正则qr/^(radius|make|model|price-to)/的下拉列表(<select>元素)
  • 对每个符合条件的<select>,遍历其下的<option>元素,提取文本内容

完整代码实现

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use WWW::Mechanize;
use HTML::TreeBuilder;
use Data::Dumper;
use JSON;

binmode STDOUT, ':encoding(UTF-8)';
binmode STDIN, ':encoding(UTF-8)';

# 替换为实际的Autotrader目标URL
my $url = 'https://www.autotrader.com/...'; 

my $mech = WWW::Mechanize->new(
    autocheck => 1,
    agent => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
);

# 加载目标页面
$mech->get($url);

# 定位到searchVehicle表单,找不到则抛出错误
my $form = $mech->form_name('searchVehicle') or die "无法找到名称为searchVehicle的表单";

# 解析页面HTML内容
my $tree = HTML::TreeBuilder->new_from_content($mech->content);
$tree->elementify;

# 用于存储提取结果的哈希表,键是下拉列表name,值是对应<option>文本数组
my %select_options;

# 遍历所有符合条件的<select>元素
foreach my $select ($tree->look_down(
    _tag => 'select',
    name => qr/^(radius|make|model|price-to)/
)) {
    my $select_name = $select->attr('name');
    my @options;

    # 遍历当前<select>下的所有<option>元素
    foreach my $option ($select->look_down(_tag => 'option')) {
        # 提取<option>的文本内容,去除首尾空白字符
        my $opt_text = $option->as_text;
        $opt_text =~ s/^\s+|\s+$//g;
        # 跳过空文本的选项
        push @options, $opt_text if $opt_text;
    }

    # 只有当有有效选项时才存入结果
    $select_options{$select_name} = \@options if @options;
}

# 用Dumper打印结果,便于调试
print Dumper(\%select_options);
# 也可以用JSON格式输出,更易读
# print to_json(\%select_options, {utf8 => 1, pretty => 1});

# 清理HTML TreeBuilder对象,避免内存泄漏
$tree->delete;

关键说明

  • 依赖安装:需要额外安装HTML::TreeBuilder模块,执行cpanm HTML::TreeBuilder即可完成安装
  • 反爬优化:设置了真实的User-Agent,避免被网站识别为爬虫拦截
  • 精准筛选:通过look_down方法结合标签和正则匹配,精准定位目标下拉列表,不会误抓其他元素
  • 文本处理:自动去除

内容的提问来源于stack exchange,提问作者tlre0952b

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:07:07