Mer*_*erc 2 html javascript jquery node.js cheerio
我必须执行以下操作:给定从服务器加载的页面,我必须在加载后自动在该页面中提交表单,并使用相同的字符串(test worked)填充其所有输入字段.这显然是我的问题的简化,但它足够接近!
目前我正在获取表单,并使用https://github.com/cheeriojs/cheerio来探索它:
var URL = http://www.example.com/form/index.html"
// ...load the page ...
$ = cheerio.load( fetchedPageText );
Run Code Online (Sandbox Code Playgroud)
目前,我有以下代码:
var $ = cheerio.load( fetchedPageText );
var forms = $('form');
for( var i1 = 0, l1 = forms.length; i1 < l1; i1 ++ ){
var form = forms[ i1 ];
inputFields = $( 'input', form );
console.log("******FORM ACTION: ", form.attribs.action );
console.log("******FORM: ", form );
for( var i2 = 0, l2 = inputFields.length; i2 < l2; i2 ++ ){
var inputField = inputFields[ i2 ];
console.log( inputField );
console.log("**************INPUT FIELD ", inputField );
/* At this point, I have `action` and every input field */
}
};
Run Code Online (Sandbox Code Playgroud)
问题:
目前,submit相对于我下载的页面.我如何确保我在正确的位置提交东西?我应该做url.parse并从URL中找出行动的鸥路径吗?
你如何实际创建一个"帖子"字符串?或者,更好的是,您将如何发布此表单?
我意识到这可能不起作用(表单可能有Javascript等).但是,在提交此表单时,还有什么我需要注意的吗?
要将表单发布到正确的地址,您必须组合页面的基本URL和post属性中的基本URL.url.resolve(from,to)可以提供帮助
要发布表单,您可以使用例如http://visionmedia.github.io/superagent/或其他一些支持application/x-www-form-urlencoded的 ajax库
您应该知道,许多网站都采用了各种反垃圾邮件措施,如果申请不正确,他们会拒绝您的请求.必须按站点检查.
您还应该知道,在一些受法律起诉的国家,群发邮件或群发表格提交.
您应该知道,基于JSON和REST或SOAP,第三方(除了解析html表单之外)通常会有更容易使用的API.
如果您需要向网络服务器提交页面,则更好的选择是与服务器所有者协商另一个API.即使使用政府服务器也不应该是一个问题,因为许多开放数据由于开放数据倡议而开放(美国,欧洲,印度,......)