这是示例代码:
from mechanize import Browser
br = Browser()
page = br.open('http://hunters.tclans.ru/news.php?readmore=2')
br.form = br.forms().next()
print br.form
Run Code Online (Sandbox Code Playgroud)
问题是服务器返回不正确的编码(windows-cp1251).如何在mechanize中手动设置当前页面的编码?
错误:
Traceback (most recent call last):
File "/tmp/stackoverflow.py", line 5, in <module>
br.form = br.forms().next()
File "/usr/local/lib/python2.6/dist-packages/mechanize/_mechanize.py", line 426, in forms
return self._factory.forms()
File "/usr/local/lib/python2.6/dist-packages/mechanize/_html.py", line 559, in forms
self._forms_factory.forms())
File "/usr/local/lib/python2.6/dist-packages/mechanize/_html.py", line 225, in forms
_urlunparse=_rfc3986.urlunsplit,
File "/usr/local/lib/python2.6/dist-packages/ClientForm.py", line 967, in ParseResponseEx
_urlunparse=_urlunparse,
File "/usr/local/lib/python2.6/dist-packages/ClientForm.py", line 1104, in _ParseFileEx
fp.feed(data)
File "/usr/local/lib/python2.6/dist-packages/ClientForm.py", line 870, in feed
sgmllib.SGMLParser.feed(self, data)
File "/usr/lib/python2.6/sgmllib.py", line 104, …Run Code Online (Sandbox Code Playgroud) 我正在使用mechanize(使用clientform)在python中进行一些Web爬行,因为它不支持JS,我想在表单中设置一个不存在的输入值(输入由JS生成).我怎样才能做到这一点?
该错误类似于您尝试执行时获得的错误
from mechanize import Browser
br = Browser()
page = br.open('http://google.com')
br.select_form(nr = 0)
br['unexistent'] = 'hello'
Run Code Online (Sandbox Code Playgroud) 如何使用现有WebClient发布自定义HEAD请求?即页面上没有表单,我想手动设置请求属性.
可能重复:
为什么在XmlHttpRequest响应中有"while(1);"?
Gmail中的while(1)有什么作用
我最近偶然发现了预先添加AJAX返回数据的做法,while (1==1) {}以便为CSRF攻击提供更高的安全性,但我没有看到该代码如何有用.有人可以解释一下吗?
我在PHP OOP和类型提示方面遇到了奇怪的问题.这是一个例子:
abstract class AC {}
class C extends AC {}
interface I {
function method(AC $abstract);
}
class InterfaceImplementation implements I {
function method(C $concrete) {}
}
Run Code Online (Sandbox Code Playgroud)
此代码将无法运行,表示method与接口声明不兼容.我认为它是兼容的,因为C扩展AC - 我想念一些东西吗?我如何期望实现这种功能?
我遇到了许多perl模块需要解决的问题perl(:MODULE_COMPAT_5.10.1):
Error: Package: perl-Class-MOP-1.12-1.el6.x86_64 (epel)
Requires: perl(:MODULE_COMPAT_5.10.1)
Error: Package: perl-Moose-1.15-1.el6.x86_64 (epel)
Requires: perl(:MODULE_COMPAT_5.10.1)
Run Code Online (Sandbox Code Playgroud)
安装的perl版本是5.16.3,操作系统是Amazon Linux AMI版本2014.03,我非常希望降级到perl 5.10.1,以便修复compat问题.我该怎么做呢?
当我尝试安装perl-Net-Amazon-EC2时会发生这种情况,这是yum list shows:
perl-Net-Amazon-EC2.noarch 0.14-2.el6 epel
所以它来自epel,这里是repo文件的相应部分:
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Run Code Online (Sandbox Code Playgroud)
似乎repo中的版本是0.14,最新版本是0.24(我已经尝试手动安装它,但它无法正常工作,我无论如何都不想手动安装所有软件包)
我试图了解如何使用"if-then"逻辑制作一个nightmare.js脚本.例如
var Nightmare = require('nightmare');
var nightmare = Nightmare({
show: true,
paths: {
userData: '/dev/null'
}
});
nightmare
.goto('http://www.example.com/')
.wait('h1')
.evaluate(function() {
return document.querySelector('title').innerText;
})
// here: go to url1 if title == '123' otherwise to url2
.end()
.then(function() {
console.log('then', arguments);
}).catch(function() {
console.log('end', arguments);
});
Run Code Online (Sandbox Code Playgroud)
如何根据评估结果将此脚本转到其他URL?
我想指定快照ID,用于为使用cloudformation创建的EC2实例创建根设备映像.我怎么做?
我只能找到一种从快照创建卷的方法,但无法在实例中使用它.