Perl, how to avoid diagnostic messages from not-directly included modules?

I'm getting this warning (after "use diagnostics;"); Parsing of undecoded UTF-8 will give garbage when decoding entities at /usr/lib/perl5/HTML/PullParser.pm line 81. My program is like this: ... use diagnostics; use WWW::Mechanize; use WWW::Mechanize::Gzip; ... $m = WWW::Mechanize::GZip->new( agent => $self->{_agent}, timeout => $self->{_timeout}, ); if (!$m->get($url)) { die("Impossibile scaricare l'url [$url]"); } if (!$m->form_number(1)) { die("Impossibile trovare il form 1"); } <WARNING IS EMITTED HERE> ... How to I get rid of it? Or may I safely ignore it? UPDATE: I just dotice that

2022-03-25 12:06:11    分类:问答    perl   diagnostics   www-mechanize

LWP set max_size but still get content

I am using LWP to get the content from some sites and whenever the page size is larger than one megabyte, I would like LWP to stop downloading the page. This is accomplished with this code: my $ua = LWP::UserAgent->new; $ua->max_size(1024); And it works fine. The only problem is that even when the page is over 1mb, I would still like to be able to get the content of what it has downloaded so far. However, whenever I do this (the traditional way to get content with LWP when there are no errors): $ua->content; It seems to not be the actual page's content but a bunch of nonsense. Does anyone know

2022-02-09 06:04:51    分类:问答    perl   www-mechanize   lwp   lwp-useragent   max-size

perl 在 mechanize::POST 后检索页面详细信息(perl retrieving page details after mechanize::POST)

问题 我正在尝试从网站收集数据。 一些反模式使寻找正确的表单对象变得困难,但我已经解决了这个问题。 我正在使用 post 方法来绕过一些充当包装器的 javascript 来提交表单。 我的问题似乎在于从 mechanize->post 方法中获取结果。 这是我的代码的缩短版本。 use strict; use warnings; use HTML::Tree; use LWP::Simple; use WWW::Mechanize; use HTTP::Request::Common; use Data::Dumper; $| = 1; my $site_url = "http://someURL"; my $mech = WWW::Mechanize->new( autocheck => 1 ); foreach my $number (@numbers) { my $content = get($site_url); $mech->get ($site_url); my $tree = HTML::Tree->new(); $tree->parse($content); my ($title) = $tree->look_down( '_tag' , 'a' ); my $atag = ""; my $atag1 = ""; foreach $atag ( $tree-

2022-01-22 12:54:55    分类:技术分享    perl   http-post   www-mechanize   lwp-useragent

perl retrieving page details after mechanize::POST

I am trying to gather data from a website. Some anti-patterns make looking finding the right form objects difficult but I have this solved. I am using a post method to get around some javascript acting as a wrapper to submit the form. My problem seems to be in getting the results from the mechanize->post method. Here's a shortened version of my code. use strict; use warnings; use HTML::Tree; use LWP::Simple; use WWW::Mechanize; use HTTP::Request::Common; use Data::Dumper; $| = 1; my $site_url = "http://someURL"; my $mech = WWW::Mechanize->new( autocheck => 1 ); foreach my $number (@numbers) {

2022-01-22 08:12:54    分类:问答    perl   http-post   www-mechanize   lwp-useragent

可以在 https 上的 WWW::Mechanize 中使用超时吗?(Possible to use timeout in WWW::Mechanize on https?)

问题 我们有一个 Perl 脚本,它使用 WWW::Mechanize 通过我们的公司代理使用 WWW::Mechanize 中的 POST 操作从安全 (https) 网站下载内容。 有时,由于未知原因,此发布操作会运行数小时。 我想控制这个。 我检查了超时,但我还在 Stackoverflow 中的一篇文章中读到它不适用于 https 网站。 知道如何使用超时机制吗? 我想在一分钟左右后停止处理该链接以继续进行而不是一起等待几个小时。 任何帮助将非常感激。 回答1 使用 LWPx::ParanoidAgent 并将其混合到 Mech 中。 $ua->timeout(10); 从开始到结束,总共需要 10 秒。 不仅仅是在套接字读取之间。 它包括所有重定向。 所以攻击者告诉你从恶意 tarpit 网络服务器下载只能让你拖延 $n 秒

2022-01-13 14:31:51    分类:技术分享    perl   https   timeout   mechanize   www-mechanize

Possible to use timeout in WWW::Mechanize on https?

We have a Perl script which uses WWW::Mechanize to download content from a secured (https) website via our company proxy using POST action in WWW::Mechanize. Sometimes this post action runs for hours for unknown reasons. I want to control this. I checked for timeout but I also read in one of the post in Stackoverflow that it does not work with https websites. Any idea how I can use the timeout mechanism? I want to stop processing that link say after a minute or so to proceed further and not wait for hours together. Any help would be really appreciated.

2022-01-13 08:27:54    分类:问答    perl   https   timeout   mechanize   www-mechanize

Perl WWW::Mechanize::Firefox 超时实现(Perl WWW::Mechanize::Firefox timeout implementation)

问题 我在 Firefox 中使用 WWW::Mechanize::Firefox 和 MozRepl 插件。 该代码通过向站点发送 HTTP GET 请求来正常获取内容。 我正在浏览一个 URL 列表并向每个 URL 发送一个 HTTP GET 请求。 但是,如果请求挂在特定的 URL 上,它会一直等待。 请注意,我指的是部分网页内容已加载,而部分内容仍处于待处理状态的情况。 它发生在网页从第三方站点加载大量内容并且无法加载其中一个资源(例如图像)的情况下,浏览器会一直等待它。 我希望请求在 'n' 秒后超时,以便我可以从列表中读取下一个 URL 并继续执行代码。 在 WWW::Mechanize perl 模块中,构造函数支持超时选项,如下所示: $mech=WWW::Mechanize->new(timeout => 10); 但是,我在 Perl 模块 WWW::Mechanize::Firefox 的文档中找不到类似的选项: http://metacpan.org/pod/WWW::Mechanize::Firefox 我试过这个: $mech=WWW::Mechanize::Firefox->new(timeout => 10); 但我认为它不起作用,因为仍有一些网站的请求挂起。 回答1 WWW::Mechanize::Firefox使用 Mozrepl 连接

2022-01-12 12:19:40    分类:技术分享    perl   www-mechanize   www-mechanize-firefox

Perl WWW::Mechanize::Firefox timeout implementation

I am using WWW::Mechanize::Firefox along with MozRepl plugin in Firefox. The code works properly to fetch content from sites by sending them an HTTP GET request. I am going through a list of URLs and sending an HTTP GET Request to each of them. However, if the request hangs on a particular URL, it keeps waiting. Please note that I am referring to cases where a part of the web page content is loaded while some of the content is still pending. It happens in cases where a web page loads a lot of content from third party sites and if one of the resources (an image for instance) could not be loaded

2022-01-11 16:25:28    分类:问答    perl   www-mechanize   www-mechanize-firefox

使用 Perl 访问 50 万页(Visit Half Million Pages with Perl)

问题 目前我正在使用 Mechanize 和 get() 方法来获取每个站点,并使用 content() 方法检查每个主页的某些内容。 我有一台非常快的计算机 + 10Mbit 连接,但仍然需要 9 个小时来检查 11K 站点,这是不可接受的,问题是 get() 函数的速度,显然需要获取页面,有什么办法可以让它更快,也许可以禁用某些东西,因为我只需要检查主页 html。 谢谢, 回答1 并行而不是串行进行查询。 如果我需要这样做,我会分叉一个过程来抓取页面。 像 Parallel::ForkManager、LWP::Parallel::UserAgent 或 WWW:Curl 之类的东西可能会有所帮助。 我倾向于支持 Mojo::UserAgent。 回答2 使用WWW::Curl (特别是 WWW::Curl::Multi)。 我每天用它来抓取 1 亿多页。 该模块是libcurl之上的一个薄绑定,所以感觉有点 C 风格,但它很快并且几乎可以做 libcurl 能够做的任何事情。 我不建议使用 LWP::Parallel::UA,因为它有点慢,而且模块本身没有经过深思熟虑。 当我开始编写一个爬虫时,我最初想分叉 LWP::Parallel::UA,但当我研究它的内部结构时我决定反对。 免责声明:我是WWW::Curl模块的当前维护者。

2021-12-21 14:57:55    分类:技术分享    perl   web-crawler   www-mechanize