小编Flo*_*ock的帖子

Scrapy:FormRequest不会自动填充ASP.net隐藏字段

我正在使用Scrapy刮掉身份验证屏幕背后的黄金.该网站使用ASP.net和ASP有一些愚蠢的隐藏字段遍布整个表单(如__VIEWSTATE,__EVENTTARGET).

当我打电话时,FormRequest.from_response(response,...我希望它能从响应中自动读取这些隐藏的字段并将它们填入formdata字典中 - 这就是Scrapy的FormRequest文档所说的应该做的事情.

但如果是这种情况,那么为什么登录过程仅在我明确列出这些字段并填充它们时才起作用?

class ItsyBitsy(Spider):
    name = "itsybitsy"
    allowed_domains = ["website.com"]
    start_urls = ["http://website.com/cpanel/Default.aspx"]

    def parse(self, response):
        # Performs authentication to get past the login form
        sel = Selector(response)
        return [FormRequest.from_response(response,
        formdata={
        'tb_Username':'admin',
        'tb_Password':'password',

        # The following fields should be auto populated, right?
        # So why does removing 'em break the login (w/500 Server Error)
        '__VIEWSTATE':
              sel.xpath("//input[@name='__VIEWSTATE']/@value").extract(),
        '__EVENTVALIDATION':
              sel.xpath("//input[@name='__EVENTVALIDATION']/@value").extract(),
        '__EVENTTARGET': 'b_Login'

        },
        callback=self.after_login,
        clickdata={'id':'b_Login'}, …
Run Code Online (Sandbox Code Playgroud)

html python forms scrapy web-scraping

4
推荐指数
1
解决办法
1758
查看次数

使用带有递归promise的setTimeout

我有以下代码等待事务在以太坊区块链上挖掘.

function waitForMinedTransaction(txHash, tries = 1) {
  return new Promise(function(resolve, reject) {
    web3.eth.getTransactionReceipt(txHash, function(err, res) {
      if (err) reject(err)
      if (res) resolve(res)

      // nothing yet (retry in 10 sec..)
      console.log(`Attempt #${ tries }...`)
      if (tries > 60) reject("max_tries_exceeded")
      setTimeout(function() { return waitForMinedTransaction(txHash, tries + 1) }, 10000)
    })
  })
}
Run Code Online (Sandbox Code Playgroud)

问题在于,当事务被挖掘时(例如,在10次尝试之后),它永远不会得到解决.我敢肯定,这事做用setTimeout,并承诺连锁(其中无极是return编的,而不是resolve/ reject荷兰国际集团目前的承诺),但需要对固定它的一些指针.

node.js promise

3
推荐指数
1
解决办法
385
查看次数

防止移动屏幕上的对话框滚动正文

我在移动屏幕上显示一个比屏幕大小更长的对话框(因此它会滚动).

这是问题所在:当你滚动到对话框的底部时(我碰巧使用的是Bootstrap 3),我希望它能够停止.相反,它开始滚动底层的身体.我已经试过这就是被认为在一切这个推荐的解决方案,它仍然不会再用的工作!

这是关于JSbin问题的现场演示,为您带来观赏乐趣

http://jsbin.com/EdAhAsU/1/

注意:要重现此问题,请使用移动设备(任何移动设备)访问该设备,并尝试滚动浏览对话框的末尾.在Android和iPhone上尝试过它 - 对两者都不起作用.

谢谢!

javascript css mobile jquery twitter-bootstrap

2
推荐指数
1
解决办法
1万
查看次数

所有非输入字段的CSS选择器

我正在尝试在我的CSS中为身体下的所有非输入字段应用自定义字体(我正在使用SASS顺便说一句).我怎么做?这不起作用:

body {
    &:not(input,select,textarea) { 
        font-family:'Roboto', sans-serif; 
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑

我最初发布这个问题是因为我怀疑(错误地)输入字段继承了正文中的字体样式.一般情况并非如此.但是,我使用的是Twitter Bootstrap框架,结果发现它们已经设置font-family:inherit;了输入字段(强制它们继承body元素上的字体集).

css sass css-selectors

2
推荐指数
1
解决办法
160
查看次数

Python:如何以较简洁的形式编写?

尝试使用Python在1到9之间添加一个0to birthday['month']:

if len(birthday['month']) == 1:
    birthday['month'] = "0" + birthday['month']
Run Code Online (Sandbox Code Playgroud)

示例:如果birthday['month']7,则预期输出为07

注意: birthday[month]string.

python python-2.7

2
推荐指数
1
解决办法
130
查看次数

数组插入和移位

我有以下数组:

a = [0, 1, 2, 3, 4, nil, nil]
Run Code Online (Sandbox Code Playgroud)

我想num在索引2中插入一个元素,使结果数组为:

a = [0, 1, num, 2, 3, 4, nil] # note the size hasn't changed
Run Code Online (Sandbox Code Playgroud)

我意识到数组可能不是最适合此练习的数据结构,但是假设这是必需的。

我怎样才能做到这一点?

为什么?

我正在尝试解决此问题:

您将获得两个经过排序的数组A和B,其中A的末尾有足够大的缓冲区来容纳B。编写一种将B按排序顺序合并到A中的方法

到目前为止,这是我的代码:

def merge(a, b) # merge b -> a
  pointer = 0 # on a
  while !b.empty? do
    case b.first <=> a[pointer]
    when 0, 1 next
    when -1
      # insert element, shift array to the right
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby

2
推荐指数
1
解决办法
307
查看次数

如何确定字符串是否为数字?

我觉得这会更容易找到,但我很惊讶它不是.

如何在地球上测试字符串是否是模型外的数字(包括小数)?

例如

is_number("1") # true
is_number("1.234") # true
is_number("-1.45") # true
is_number("1.23aw") #false
Run Code Online (Sandbox Code Playgroud)

在PHP中,有is_numeric,但我似乎无法在Ruby(或Rails)中找到等价物.

到目前为止,我已经阅读了以下答案,并且没有更接近:

ruby ruby-on-rails

1
推荐指数
1
解决办法
4742
查看次数

Flutter:调用 setState 时 ListView 滚动回原点

我有一个带有一堆图标的水平 ListView。当用户单击图标时,我调用setState以跟踪所选项目的索引(以便我可以突出显示它)。

问题是,每当选择一个项目时,ListView 就会滚动回到开头(请参见下面的 GIF):

单击时 ListView 重置位置

这是代码:

class _FormScreenState extends State<FormScreen> {
  int selectedCategory = 0;
  final categories = [
    {'icon': Icons.shopping_basket, 'category': 'Shopping'},
    {'icon': Icons.local_cafe, 'category': 'Eating out'},
    // ....
  ];

  Widget build(BuildContext context) {
    final _formKey = GlobalKey<FormState>();

    return Form(
      key: _formKey,
      child: SafeArea(
        child: Container(
          margin: EdgeInsets.symmetric(horizontal: 10.0),
          child: Column(
            children: <Widget>[
              SizedBox(height: 40.0),
              Text('Some money disappeared ',
                  style: TextStyle(fontSize: 24.0)),
              SizedBox(height: 40.0),
              TextFormField(
                autofocus: true,
                controller: _ctrlTxtAmount,
                keyboardType: TextInputType.number,
                decoration: InputDecoration(
                  hintText: 'AED ...',
                ), …
Run Code Online (Sandbox Code Playgroud)

flutter

1
推荐指数
1
解决办法
1478
查看次数

Rails:包含日期时间查询的范围

我正在尝试定义一个scope包含所有尚未过期的项目 - 或者根本没有过期日期的项目(nil).

这就是我所拥有的,但它不会返回我想要的东西:

scope :active, -> { where(["expires > ? OR expires = ?", Time.now, nil]) }
Run Code Online (Sandbox Code Playgroud)

我是Rails的新手,有没有明显的东西我缺少(或者可能是一个明显的语法错误)?

ruby-on-rails rails-activerecord

0
推荐指数
1
解决办法
993
查看次数