我正在尝试使用phantomJS(这是一个很棒的工具btw!)为我有登录凭据的页面提交表单,然后将目标页面的内容输出到stdout.我能够使用幻像访问表单并成功设置其值,但我不太确定提交表单和输出后续页面内容的正确语法.到目前为止我所拥有的是:
var page = new WebPage();
var url = phantom.args[0];
page.open(url, function (status) {
if (status !== 'success') {
console.log('Unable to access network');
} else {
console.log(page.evaluate(function () {
var arr = document.getElementsByClassName("login-form");
var i;
for (i=0; i < arr.length; i++) {
if (arr[i].getAttribute('method') == "POST") {
arr[i].elements["email"].value="mylogin@somedomain.com";
arr[i].elements["password"].value="mypassword";
// This part doesn't seem to work. It returns the content
// of the current page, not the content of the page after
// the submit has been executed. Am I …
Run Code Online (Sandbox Code Playgroud) 我正在使用Facebook API获取给定URL的类似/共享计数.奇怪的是,返回结果似乎很不一致.例如,此页面返回结果:
https://api.facebook.com/method/fql.query?query=select%20total_count,like_count,comment_count,share_count,click_count%20from%20link_stat%20where%20url='http://www.groupon.com/deals/seattlehelitourscom-by-classic-helicopter-corp'&format=json
然而,这个不是:
https://api.facebook.com/method/fql.query?query=select%20total_count,like_count,comment_count,share_count,click_count%20from%20link_stat%20where%20url='http://www.livingsocial.com/deals/278194-sunset-kayaking-hot-chowder'&format=json
第二页显然有一个共享计数,当我检查页面的HTML时,用于共享的URL是我在上面的API请求中放置的URL.但是,API不响应任何数量的喜欢或分享的任何计数信息.
关于为什么API可能会响应某些URL而不是其他URL的任何线索?
我已经做了一段时间的网络编程,并且对LAMP堆栈非常熟悉.我决定尝试玩弄nginx的/接龙/舞者堆栈和我有点困惑如何理解,从一个高层次,所有的部分是如何相互关联的.设置堆栈似乎并不像设置LAMP堆栈那样简单,但这可能是因为我并不真正了解这些部分是如何相关的.
我理解nginx正在扮演的角色 - 一个轻量级的网络服务器/代理 - 但我对starman与pgsi,plack和舞者的关系感到困惑.
我将非常感谢这些部分如何相互关联以及为什么每个部分都需要(或不必要)来获得堆栈设置的高级细分.谢谢!
我有一个NewsStories表,我还要加入一些相关的表.每个新闻故事可以有多个图像,类别和地址.所以查询本质上是:
SELECT * FROM NewStories
LEFT JOIN Images ON Newstories.id=Images.story_id
LEFT JOIN Categories ON NewsStories.id=Categories.story_id
LEFT JOIN Addresses ON NewsStories.id=Addresses.story_id
WHERE ...
Run Code Online (Sandbox Code Playgroud)
每个故事通常有一些图像和地址,以及1或2个类别.NewsStories表有大约10,000篇文章.
麻烦的是性能相当慢(大约15-20秒,虽然它确实变化很大,有时下降到5秒).
我想知道是否有更好的方法来组织查询以加快速度(我对SQL很新).
特别是,给定故事的行数乘以图像数乘以地址数乘以类别数量似乎相当浪费.
我基本上试图将新闻故事的属性重建为一个我可以在前端操作的对象.
这是解释(如果格式化不正确,请道歉).我猜我没有正确索引地址,如果它是"使用在哪里".那是对的吗?
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE Addresses ALL NULL NULL NULL NULL 6640 Using where
1 SIMPLE NewsStories eq_ref PRIMARY PRIMARY 767 NewsStories.Addresses.story_id 1 Using where
1 SIMPLE Images ref PRIMARY PRIMARY 767 NewsStories.NewsStories.id 1 Using index
1 SIMPLE Categories ref PRIMARY PRIMARY 767 NewsStories.NewStories.id 1
Run Code Online (Sandbox Code Playgroud) 我使用以下方式启动了Dancer/Starman服务器:
sudo plackup -s Starman -p 5001 -E deployment --workers=10 -a mywebapp/bin/app.pl
但我不确定如何停止服务器.有人能给我一个快速的方法来阻止它以及它产生的所有工人吗?
我刚刚介绍了与Perl的WWW :: Mechanize :: Firefox一起使用的MozRepl的奇迹,并试图弄清楚如何使用它来抓取GWT页面(例如:https://www.google. com/offers/home#!details/4bc7fd6bd3feb311/XYW81TXGLA88TR42)
我真正想要的是渲染的html,而不是实际的html.真的很感激我会如何得到这个.
我在Perl中将对象编码为JSON字符串的所有示例都涉及哈希.如何将简单数组编码为JSON字符串?
use strict;
use warnings;
use JSON;
my @arr = ("this", "is", "my", "array");
my $json_str = encode_json(@arr); # This doesn't work, produced "arrayref expected"
# $json_str should be ["this", "is", "my", "array"]
Run Code Online (Sandbox Code Playgroud) 我想运行一个爬虫,可以在没有X服务器的环境中处理javascript创建的html.我知道我可以在xvfb下以无头状态运行Firefox,我知道如何在Firefox上安装MozRepl并使用WWW :: Mechanize与它进行交互,当我有实际的浏览器并可以下载和设置模块时.
我不知道该怎么办是在我没有X服务器的环境中在Firefox上设置MozRepl,以便我安装模块.任何帮助表示赞赏.
我有一个网页表,主键作为URL的哈希值,还有一个auto_increment ID列,它也是一个唯一键.
我有点困惑的是为什么连续插入不会将ID字段增加1.当我第一次创建表并执行单个插入时,第一个id为1.第二个插入生成,id为5和第三是8.
我在表上有一个触发器,在插入时,计算网页URL的哈希值.不确定这是否相关.
有间隙不是问题,但我想了解为什么连续插入不会生成步长为1的ID.
谢谢!
使用Perl的Websocket服务器时,如果我使用长度大于16,000个字符的send_utf8发送json消息,则会导致与Chromeocket的连接在Chrome中被杀死并显示以下消息:
"无法将文本框架解码为UTF-8".
对这个Websocket服务器可以发送的消息长度有一些限制,有没有办法解决这个限制?