bash/curl:两步式web表单提交

问题描述:

我想在bash中按顺序在同一页上提交两个表单。 http://en.wikipedia.org/w/index.php?title=Special:Export包含两种形式:一种填充给定Wikipedia类别的页面列表,另一种填充该列表的XML数据。bash/curl:两步式web表单提交

使用在bash卷曲,我可以独立提交的第一种形式,返回与填充页面场HTML文件(虽然我不能使用它,因为它是当地的,而不是*的服务器上):

curl -d "addcat=1&catname=Works_by_Leonardo_da_Vinci&curonly=1&action=submit" http://en.wikipedia.org/w/index.php?title=Special:Export -o "somefile.html" 

而且我可以提交第二形式,而指定一个页面,以获取XML:

curl -d "pages=Mona_Lisa&curonly=1&action=submit" http://en.wikipedia.org/w/index.php?title=Special:Export -o "output.xml" 

...但我无法弄清楚如何将两个步骤合并,或管道一进其他方面,返回一个类别中的所有页面的XML,就像我在执行两个步骤manu时得到的那样盟友。 http://www.mediawiki.org/wiki/Manual:Parameters_to_Special:Export似乎表明这是可能的;有任何想法吗?我不必使用卷曲或bash。

Special:Export并不意味着完全自动检索The API是例如,要获得所有页面的当前文本中分类:可以通过达芬奇在XML工程格式,你可以使用这个网址:

http://en.wikipedia.org/w/api.php?format=xml&action=query&generator=categorymembers&gcmtitle=Category:Works_by_Leonardo_da_Vinci&prop=revisions&rvprop=content&gcmlimit=max

这不会返回子类的网页,并仅限于第500页(虽然这不是在这种情况下,问题并没有访问的方式休息)。

+0

美丽!正是我需要的。 – meetar

假设你可以解析从第一个HTML文件的输出,并生成的页面(例如

Mona Lisa 
The Last Supper 

列表可以通过管道输出到使用read一个bash循环作为一个简单的例子:

$ seq 1 5 | while read x; do echo "I read $x"; done 
I read 1 
I read 2 
I read 3 
I read 4 
I read 5 
+0

有趣,谢谢! – meetar