Perl语言的特点和数据采集示例

亿牛云代理

Perl是一种通用的高级开源编程语言,具有简洁易读的语法,可用于完成各种任务,从处理文本文件到语音识别。它具有出色的文本处理能力,可用于文本操作、基于正则表达式的模式匹配、原地文件编辑、日志文件分析以及将文件转换为PDF、HTML或XML格式。Perl还可用于编写通用网关接口(CGI)程序,因为它可以处理二进制文件。

Perl的特点包括:

借鉴了其他编程和脚本语言,如C和Shell。

继承了C语言的很多特性,包括变量、语句、表达式、控制结构和子程序。

借鉴了Shell脚本的一些特性,如使用前导符号(如$,#,@)和方便的内置函数(如sort)。

是一种松散类型的语言,可以自动推断变量的数据类型并自动管理内存。

支持类型转换,可以改变对象的数据类型,如将字符串转换为数字。

跨平台,并且与HTML、XML等标记语言兼容。

拥有完善的生态系统,提供超过25000个开源模块供使用。

与Python相比,Perl有以下区别:

Perl更注重灵活性和表达力,Python更注重简洁性和一致性。

Perl更适合处理文本和正则表达式,Python更适合处理数据结构和算法。

Perl有多种方法可以实现同一个功能,Python有一种最佳实践(The Zen of Python)。

Perl使用分号和花括号来结束语句和定义代码块,Python使用缩进来组织代码结构。

下面用Perl写一个爬虫程序,采集https://weibo.com的TOP10热搜:

use strict;

use warnings;

use LWP::UserAgent;

use Thread::Pool;

use HTTP::Proxy;

use PDF::API2;

# 亿牛云代理

# 爬虫加强版 设置代理服务器的主机、端口、用户名和密码

my $proxy_ip = 'www.16yun.cn';

my $proxy_port = '31000';

my $proxy_username = '16YUN';

my $proxy_password = '16IP';

# 随机 User-Agent 列表

my @user_agents = (

    '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; rv:89.0) Gecko/20100101 Firefox/89.0',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',

    'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15'

);

# 创建 UserAgent 对象

my $ua = LWP::UserAgent->new();

# 设置代理服务器

my $proxy = HTTP::Proxy->new(

    host => $proxy_ip,

    port => $proxy_port,

    proxy_user => $proxy_username,

    proxy_pass => $proxy_password

);

# 创建线程池

my $pool = Thread::Pool->new(

    {

        workers => 5,    # 设置线程数

        do => \&process_url,    # 处理函数

    }

);

# 采集热搜数据

my $url = 'https://weibo.com';

my $response = $ua->get($url);

if ($response->is_success) {

    my $content = $response->decoded_content;

    my $pdf = PDF::API2->new();

    while ($content =~ m/<a class="list_item" href=".*?" target="_blank" action-data="(.*?)" suda-uatrack=".*?" >(.*?)<\/a>.*?<\/h3>.*?<span class=".*?" >(.*?)<\/span>/sg) {

        my $rank = $1;

        my $title = $2;

        my $clicks = $3;

        $pool->add($rank, $title, $clicks, $pdf);

    }

    # 保存为 PDF 文件

    $pdf->save('hot_searches.pdf');

    $pdf->end();

}

else {

    die "Failed to retrieve content: " . $response->status_line;

}

# 等待线程池中的任务完成

$pool->join();

sub process_url {

    my ($rank, $title, $clicks, $pdf) = @_;

    # 在这里可以对热搜数据进行分析和处理

    # 将结果添加到 PDF 文件中

    my $page = $pdf->page();

    my $font = $pdf->corefont('Helvetica', -encoding => 'latin1');

    my $text = $page->text();

    $text->font($font, 12);

    $text->translate(50, $pdf->height() - 50);

    $text->text("Rank: $rank\nTitle: $title\nClicks: $clicks\n\n");

}

请确保在运行代码之前,您已安装 PDF::API2 模块。您可以使用 CPAN 或其他 Perl 模块管理工具进行安装。使用这段代码,热搜数据将会以 PDF 格式存储在 hot_searches.pdf 文件中。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容