很多時候我想自動化http查詢。我目前使用Java(和普通的http客戶端),但可能更喜歡基於腳本的方法。一些非常快速和簡單的事情。在哪裏我可以設置標題,轉到一個頁面,而不用擔心設置整個OO生命週期,設置每個標題,調用一個html解析器......我正在尋找任何語言的解決方案,優選腳本更有效地腳本HTTP
回答
怎麼樣使用PHP + Curl,或者只是bash?
的Python urllib可能是你在找什麼。
或者PowerShell中暴露了一個腳本環境完整的.NET HTTP庫。
通常,人們比urllib需要更多的urllib2。 – 2010-01-11 16:48:34
機械化爲Python非常易於使用:http://wwwsearch.sourceforge.net/mechanize/
Ruby機械化也很好。 – 2010-01-11 16:23:56
它似乎也存在於perl中。 – emil 2010-01-11 16:30:40
一些紅寶石庫:
- httparty:真的很有趣,哲學是有趣的。
- mechanize:經典的高質量的網絡自動化庫。
- scrubYt:乍一看令人費解,但有趣的使用。
輪到我了:wget的或Perl與lwp。您會在鏈接頁面上找到示例。
取決於你在做什麼最簡單的解決方案看起來是bash的+捲曲。
後者的手冊頁,請訪問:
http://curl.haxx.se/docs/manpage.html
你可以做的職位,以及得到,HTTPS,顯示頭,與Cookie的工作,基本通過所有的Digest HTTP認證,隧道各種代理服務器,包括NTLM on * nix等等。
捲曲也可作爲與C和PHP支持共享庫。
HTH
C.
我測試的REST API的那一刻,發現ReST Client很不錯。這是一個GUI程序,但是您可以將查詢保存並恢復爲XML文件(或者讓它們生成),嵌入,編寫測試腳本等。它基於Java(這不是特別的優勢,但你提到了它)。
記錄會話的減點數。 ReST客戶端適用於無狀態的「單次鏡頭」。
如果它不適合您的需求,我會去提及已經提到的機械化(或WWW-Mechanize,因爲它是在CPAN中稱爲)。
Twill是相當不錯的,並進行測試。它可以用作腳本,交互式會話或Python程序中。
如果您有簡單的需求(抓取頁面然後解析它),很難擊敗LWP::Simple和HTML::TreeBuilder。
use strict;
use warnings;
use LWP::Simple;
use HTML::TreeBuilder;
my $url = 'http://www.example.com';
my $content = get($url) or die "Couldn't get $url";
my $t = HTML::TreeBuilder->new_from_content($content);
$t->eof;
$t->elementify;
# Get first match:
my $thing = $t->look_down(_tag => 'p', id => qr/match_this_regex/);
print $thing ? $thing->as_text : "No match found\n";
# Get all matches:
my @things = $t->look_down(_tag => 'p', id => qr/match_this_regex/);
print $_ ? $_->as_text : "No match found" for @things;
Yup,LWP和HTML :: TreeBuilder通常會一起使用。 – 2010-01-11 18:05:18
@Leonardo,就像巧克力和花生醬一樣 - 不錯,但更好。 – daotoad 2010-01-12 03:21:59
Perl和WWW::Mechanize可以使網頁抓取等簡單和容易,包括易於操作的形式(假設你想要去到登錄頁面,在用戶名和密碼填寫並提交表單,處理Cookie /隱藏的會話標識符就像瀏覽器一樣...)
同樣,從提取的頁面查找或提取鏈接也很簡單。
如果您需要解析WWW :: Mechanize無法輕鬆幫助的結果頁面中的內容,請將結果提供給HTML::TreeBuilder以使解析變得容易。
- 1. 更有效地調試碼頭腳本
- 2. 在Blender3D中更有效的Python腳本
- 3. 創建一個腳本,幫助更快,更有效地呈現成績
- 4. 通過腳本將地址更改爲http下載ftp鏈接http
- 5. 寫開關更有效地
- 6. 更有效地旋轉行
- 7. 更有效地過濾XDocument
- 8. 更改Cookie有效日期-HTTP
- 9. 通過-asjob使腳本更高效
- 10. 使動畫腳本更高效
- 11. 使用flyway有效地管理可重複腳本
- 12. 如何讓這個腳本更有效率?
- 13. 腳本運行極其緩慢,需要更有效的
- 14. 蟒蛇結合每對線:使腳本更有效
- 15. 更改的服務器帳戶和php腳本不再有效
- 16. 我怎樣才能讓我的VBA展望腳本更有效
- 17. 在Android本地腳本中進行不安全的http請求
- 18. Django-extension腳本編號爲(有效)的腳本
- 19. 讓Android Http BufferedReader更高效?
- 20. 腳本後效應
- 21. 檢查sql腳本是否有效
- 22. 批處理腳本不再有效?
- 23. 是腳本src = // example.com/file.js有效嗎?
- 24. 這個聊天腳本是否有效?
- 25. 配色腳本行之有效
- 26. 腳本重定向即使有效
- 27. 使用腳本更改solaris IP地址
- 28. 網絡代理腳本與http代理的效率?
- 29. Shell腳本:「本地foo」和「本地foo =」有區別嗎?
- 30. 更新元素中的文本 - 有效地
你得到了一個答案霰彈槍,因爲實際上有很多很好的產品在這個空間,爲不同的用例而設計。你爲什麼想要自動化HTTP查詢?你在做什麼?你是否曾經*需要在請求中設置任何HTTP頭部,或者在響應中查看頭部?默默遵循重定向總是可以的,或者你需要了解它們嗎?你需要像DOM和JavaScript這樣的瀏覽器功能嗎?等等 – 2010-01-11 17:03:59
它有所不同。在家裏,我有時會看到某些事情自動化的一點(但不像firefox宏),我一直很喜歡和httpbots打交道。我的第一個節目是蜘蛛。在工作中,我們確實需要一些http單元測試。至於答案,是的,這將是一個很好的閱讀幾天。 – Zombies 2010-01-11 18:47:34
這可以變成一個維基?真的沒有一個可以接受的答案。 – Zombies 2010-01-27 18:27:30