Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Perl and Web [0]

4 views
Skip to first unread message

多愁善感的猪

unread,
Feb 3, 2009, 2:42:03 AM2/3/09
to
Perl and Web [0]

偶准备写个连载,叫 Perl and Web,
主要介绍 Win32 下两种用 Perl 访问网页的方法:Win32::OLE 和 libcurl

LWP 是大家比较熟悉的方法,偶将要介绍的 libcurl 是它的一个替代方案。
cURL and libcurl 的主页:http://curl.haxx.se/
大家可以先看看,去了解一下 curl

用 Win32::OLE 的 InternetExplorer.Application 对象是大家比较熟悉的方法,
也有好多 VB 程序可以参考。

下一篇,我们将从 Win32::OLE 开始。

--
人生是场游戏,要是能存盘就好了。

股市其实很简单,要是有明天的报纸就好了。

[m [31m※ 来源:·水木社区 http://newsmth.net·[FROM: 58.247.121.*] [m

风催草低 - 明月何尝不照人

unread,
Feb 3, 2009, 2:46:05 AM2/3/09
to
很好,很强大,期待中!

【 在 w20692 (多愁善感的猪) 的大作中提到: 】
: Perl and Web [0]


: 偶准备写个连载,叫 Perl and Web,
: 主要介绍 Win32 下两种用 Perl 访问网页的方法:Win32::OLE 和 libcurl

: ...................

--

Emacs 字体配置搞定,TeX 字体配置搞定,万岁!


[m [1;36m※ 来源:·水木社区 newsmth.net·[FROM: 211.157.41.*] [m

风催草低 - 明月何尝不照人

unread,
Feb 3, 2009, 2:46:28 AM2/3/09
to
别忘了介绍下模块安装:-)

枝子加油

unread,
Feb 3, 2009, 2:58:53 AM2/3/09
to
Win32::OLE 的 InternetExplorer.Application 有个包装,叫 samie
我用过 好几个bug,我自己改了过来
但这种办法问题很多 因为IE是事件驱动的 你做一会儿事情总得让它消息循环
loop()一下,否则界面就freeze在那里了
我想搞个定时器 至今还想不到好办法。多线程是不行的,一个线程不能访问另一个
线程里的复杂类型变量(比如COM之类的) 或者可以但我不知道方法

【 在 w20692 (多愁善感的猪) 的大作中提到: 】
: Perl and Web [0]
: 偶准备写个连载,叫 Perl and Web,
: 主要介绍 Win32 下两种用 Perl 访问网页的方法:Win32::OLE 和 libcurl
: ...................

--

[m [1;33m※ 来源:·水木社区 newsmth.net·[FROM: 221.220.248.*] [m

aXqd

unread,
Feb 3, 2009, 3:28:18 AM2/3/09
to
搭车问一个,需要登录的https站点,怎么镜像下来?(当然知道用户名和密码)
wget行么?不行的话,用LWP?

【 在 w20692 (多愁善感的猪) 的大作中提到: 】
: Perl and Web [0]
: 偶准备写个连载,叫 Perl and Web,
: 主要介绍 Win32 下两种用 Perl 访问网页的方法:Win32::OLE 和 libcurl
: ...................

--
telnet ur heart...


[m [1;34m※ 来源:·水木社区 newsmth.net·[FROM: 202.106.94.*] [m

风催草低 - 明月何尝不照人

unread,
Feb 3, 2009, 3:26:40 AM2/3/09
to
我上面那个查票的脚本就是搞的多线程,一个线程跑 win32::gui
代码,另一个线程轮询水木,并给 ui 线程发指令。

你可以试试 Thread::Queue,我觉得这个很方便,你可以把它当作
一个管道,复杂数据编码放进去,在另一边解码出来,samie 的情况
我猜测比如想提取所有链接,可以发一个消息 "extrac_all_links",
然后 ui 线程先发一个数字,然后发这么多个链接过来,这样控制
线程不用直接引用 OLE 的复杂数据结构了。

【 在 asker (枝子加油) 的大作中提到: 】
: Win32::OLE 的 InternetExplorer.Application 有个包装,叫 samie


: 我用过 好几个bug,我自己改了过来
: 但这种办法问题很多 因为IE是事件驱动的 你做一会儿事情总得让它消息循环

枝子加油

unread,
Feb 3, 2009, 3:38:47 AM2/3/09
to
win32::GUI好办啊 你可以自定义消息吧
IE的消息循环是写死的
Thread::Queue 我timer线程往里写 谁读呢?

【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: 我上面那个查票的脚本就是搞的多线程,一个线程跑 win32::gui


: 代码,另一个线程轮询水木,并给 ui 线程发指令。
: 你可以试试 Thread::Queue,我觉得这个很方便,你可以把它当作

风催草低 - 明月何尝不照人

unread,
Feb 3, 2009, 4:09:40 AM2/3/09
to
orz,原来如此。。。

win32::gui 我是发一个自定义消息让 ui 线程读取
thread::queue 的内容。

【 在 asker (枝子加油) 的大作中提到: 】
: win32::GUI好办啊 你可以自定义消息吧


: IE的消息循环是写死的
: Thread::Queue 我timer线程往里写 谁读呢?

Sukha

unread,
Feb 3, 2009, 4:32:28 AM2/3/09
to
libcurl win下我没安装成功,都是直接封装curl 命令行来执行的。

【 在 w20692 (多愁善感的猪) 的大作中提到: 】
: Perl and Web [0]
: 偶准备写个连载,叫 Perl and Web,
: 主要介绍 Win32 下两种用 Perl 访问网页的方法:Win32::OLE 和 libcurl
: ...................

--

[m [1;34m※ 来源:·水木社区 newsmth.net·[FROM: 219.234.162.*] [m

昨夜西风凋碧树

unread,
Feb 3, 2009, 4:49:36 AM2/3/09
to
support and expect.
【 在 w20692 (多愁善感的猪) 的大作中提到: 】
: 标 题: Perl and Web [0]
: 发信站: 水木社区 (Tue Feb 3 15:42:03 2009), 转信
:
: Perl and Web [0]
:
: 偶准备写个连载,叫 Perl and Web,
: 主要介绍 Win32 下两种用 Perl 访问网页的方法:Win32::OLE 和 libcurl
:
: LWP 是大家比较熟悉的方法,偶将要介绍的 libcurl 是它的一个替代方案。

: cURL and libcurl 的主页:http://curl.haxx.se/
: 大家可以先看看,去了解一下 curl
:
: 用 Win32::OLE 的 InternetExplorer.Application 对象是大家比较熟悉的方法,
: 也有好多 VB 程序可以参考。
:
: 下一篇,我们将从 Win32::OLE 开始。
:
: --
: 人生是场游戏,要是能存盘就好了。
:
: 股市其实很简单,要是有明天的报纸就好了。
:
: [m [31m※ 来源:·水木社区 http://newsmth.net·[FROM: 58.247.121.*] [m


--

[m [1;31m※ 来源:·水木社区 newsmth.net·[FROM: 220.194.35.*] [m

混沌大法师|不懂就问

unread,
Feb 3, 2009, 6:23:57 AM2/3/09
to
赞,期待!

【 在 w20692 (多愁善感的猪) 的大作中提到: 】


: Perl and Web [0]
: 偶准备写个连载,叫 Perl and Web,
: 主要介绍 Win32 下两种用 Perl 访问网页的方法:Win32::OLE 和 libcurl

: ...................

--
--------------------------------------------------------------
ChaosMage, holding Ockham's Razor, riding Wheeler's smoke dragon, fights with Laplace's demon, who is guarded by Maxwell's ghost and Schroumldinger's cat.


[m [1;32m※ 来源:·水木社区 newsmth.net·[FROM: 211.99.222.*] [m

多愁善感的猪

unread,
Feb 3, 2009, 7:21:24 AM2/3/09
to
Curl can not do recursive fetches like wget
curl 取一页:curl -u name:password -k https://that.secure.server.com

两种方法:
1)可以用 wget 命令行。
2)可以用 libcurl Spidering 整个 site,
方法是先POST 登录,保存 Cookies ,
再用同一个 Cookies GET 遍历 site (可以用多线程提高效率)

【 在 aXqd (aXqd) 的大作中提到: 】
: 搭车问一个,需要登录的https站点,怎么镜像下来?(当然知道用户名和密码)
: wget行么?不行的话,用LWP?

--
人生是场游戏,要是能存盘就好了。

股市其实很简单,要是有明天的报纸就好了。

[m [33m※ 来源:·水木社区 http://newsmth.net·[FROM: 123.122.215.*] [m

单行道

unread,
Feb 3, 2009, 8:31:16 PM2/3/09
to

手头上没win32
不过libcurl应该是跨平台的吧

【 在 w20692 (多愁善感的猪) 的大作中提到: 】
: Perl and Web [0]
: 偶准备写个连载,叫 Perl and Web,
: 主要介绍 Win32 下两种用 Perl 访问网页的方法:Win32::OLE 和 libcurl
: ...................

--

目前比较流行的所谓标准的内激波GRB图像认为:一系列质量大致相当,整体Lorentz因子相差悬殊的壳层相互碰撞产生中等相对论的激波,该激波使壳层中的电子质子得以加热,部分热能转化为磁能.那些随机的相对论电子在磁场中同步辐射产生了我们观测到的高能gammar射线闪耀.


[m [1;32m※ 来源:·水木社区 newsmth.net·[FROM: 202.111.28.*] [m

aXqd

unread,
Feb 3, 2009, 10:08:21 PM2/3/09
to
感谢,用wget解决问题了...

wget支持https://username:password@ip/
如果用户名密码里包含@,用%40代替一下就行了。

原来没发现,是因为貌似wget for windows不支持这种url表示...囧rz...
在linux下就ok了...


【 在 w20692 (多愁善感的猪) 的大作中提到: 】
: Curl can not do recursive fetches like wget


: curl 取一页:curl -u name:password -k https://that.secure.server.com
: 两种方法:

: ...................

--
telnet ur heart...


[m [1;36m※ 来源:·水木社区 newsmth.net·[FROM: 202.106.94.*] [m

Kneo

unread,
Feb 3, 2009, 10:10:23 PM2/3/09
to
是不是引号有问题?批处理的转义太令人发狂了,搞不懂该怎么弄。
【 在 aXqd (aXqd) 的大作中提到: 】
: 感谢,用wget解决问题了...

: wget支持https://username:password@ip/
: 如果用户名密码里包含@,用%40代替一下就行了。
: ...................

--

[m [1;36m※ 来源:·水木社区 newsmth.net·[FROM: 222.190.111.*] [m

Sukha

unread,
Feb 3, 2009, 10:11:58 PM2/3/09
to
wget for win32 应该也没问题。

【 在 aXqd (aXqd) 的大作中提到: 】
: 感谢,用wget解决问题了...
: wget支持https://username:password@ip/
: 如果用户名密码里包含@,用%40代替一下就行了。
: ...................

--

[m [1;35m※ 来源:·水木社区 newsmth.net·[FROM: 219.234.162.*] [m

Sukha

unread,
Feb 3, 2009, 10:13:42 PM2/3/09
to
跨平台是跨平台,但编译的时候貌似需要自己改点东西,没有写for win32的设置。另外,这个版本也很久没更新了。感觉不考虑效率,生成curl 命令行来执行还更简单。
【 在 redicaps (单行道) 的大作中提到: 】
: 手头上没win32
: 不过libcurl应该是跨平台的吧

aXqd

unread,
Feb 3, 2009, 10:16:21 PM2/3/09
to
: 是不是引号有问题?批处理的转义太令人发狂了,搞不懂该怎么弄
我直接给url套的单引号...

: wget for win32 应该也没问题
我在google搜的wget windows,然后下的第一个链接...

昨天wget了一个晚上,今早来看,下完了。
但也不清楚会不会有某些文件下了一半的情况...

【 在 aXqd (aXqd) 的大作中提到: 】
: 感谢,用wget解决问题了...
: wget支持https://username:password@ip/
: 如果用户名密码里包含@,用%40代替一下就行了。
: ...................

--
telnet ur heart...


[m [1;36m※ 来源:·水木社区 newsmth.net·[FROM: 202.106.94.*] [m

没有“昵”称

unread,
Feb 3, 2009, 10:20:04 PM2/3/09
to
单引号会有问题啊。
windows 下单引号直接就当参数给你处理了。
【 在 aXqd (aXqd) 的大作中提到: 】
: 我直接给url套的单引号...
: 我在google搜的wget windows,然后下的第一个链接...
: 昨天wget了一个晚上,今早来看,下完了。
: ...................

--

[m [1;34m※ 来源:·水木社区 newsmth.net·[FROM: 61.135.207.*] [m

aXqd

unread,
Feb 4, 2009, 1:40:58 AM2/4/09
to
wget -m -no-check-certificate 'https://username:pas%40...@x.x.x.x/folder?dcPath=ha-datacenter&dsName=datastore1'

然后我把? = & 表示成%xx也试过,linux下的wget就这样ok了...

【 在 flw (没有“昵”称) 的大作中提到: 】
: 单引号会有问题啊。
: windows 下单引号直接就当参数给你处理了。


--
telnet ur heart...


[m [1;37m※ 来源:·水木社区 newsmth.net·[FROM: 202.106.94.*] [m

没有“昵”称

unread,
Feb 4, 2009, 1:50:41 AM2/4/09
to
windows 下你这个单引号肯定会有问题。
还有那个 &,也有问题。
【 在 aXqd (aXqd) 的大作中提到: 】
: wget -m -no-check-certificate 'https://username:pas%40...@x.x.x.x/folder?dcPath=ha-datacenter&dsName=datastore1'

: 然后我把? = & 表示成%xx也试过,linux下的wget就这样ok了...

中年不努力,老大徒伤悲

unread,
Feb 4, 2009, 2:02:08 AM2/4/09
to
我一般不在windows下搞这些东东,还真不清楚呢
讨厌windows

【 在 flw (没有“昵”称) 的大作中提到: 】
: windows 下你这个单引号肯定会有问题。
: 还有那个 &,也有问题。


--
lisp, haskell, erlang, OCaml 一个都不能少


[m [1;31m※ 来源:·水木社区 newsmth.net·[FROM: 60.211.220.149] [m

没有“昵”称

unread,
Feb 4, 2009, 2:18:25 AM2/4/09
to

【 在 chylli (中年不努力,老大徒伤悲) 的大作中提到: 】
: 讨厌windows
嗯,马上一百遍,你就立马成 Linux 高手了。
这是《Linux 高手速成指南》上说的。

aXqd

unread,
Feb 4, 2009, 2:59:57 AM2/4/09
to
老大,那要怎么写啊...

【 在 flw (没有“昵”称) 的大作中提到: 】
: windows 下你这个单引号肯定会有问题。
: 还有那个 &,也有问题。


--

Sukha

unread,
Feb 4, 2009, 3:22:19 AM2/4/09
to
貌似 & 没问题。 试试用 --user=USER --pass=PASS 来避免@的问题。
是 GNU Wget 1.11.4 吗?
【 在 aXqd (aXqd) 的大作中提到: 】
: 老大,那要怎么写啊...

aXqd

unread,
Feb 4, 2009, 3:34:55 AM2/4/09
to
http://users.ugent.be/~bpuype/wget/

仔细看了看,还真有:
--http-user=USER set http user to USER.
--http-password=PASS set http password to PASS.

不知对https管用不,已经下下来,就不想试了 :P
节后综合症,不想干活,懒得动,唉...


【 在 zhms (Sukha) 的大作中提到: 】
: 貌似 & 没问题。 试试用 --user=USER --pass=PASS 来避免@的问题。


: 是 GNU Wget 1.11.4 吗?

0 new messages