小编gog*_*urt的帖子

使用带有splash的InitSpider:只解析登录页面?

这是我之前提到过的一个后续问题.

我正在尝试抓取一个我必须首先登录的网页.但经过身份验证后,我需要的网页需要运行一些Javascript才能查看内容.我所做的是按照这里的说明安装splash来尝试渲染Javascript.然而...

在我切换到启动之前,使用Scrapy进行身份验证InitSpider很好.我正在通过登录页面并抓取目标页面确定(显然,除非没有Javascript工作).但是,一旦我添加代码以通过启动传递请求,看起来我似乎没有解析目标页面.

下面的蜘蛛.启动版本(此处)与非启动版本之间的唯一区别是该功能def start_requests().两者之间的其他一切都是一样的.

import scrapy
from scrapy.spiders.init import InitSpider
from scrapy.spiders import Rule
from scrapy.linkextractors import LinkExtractor

class BboSpider(InitSpider):
    name = "bbo"
    allowed_domains = ["bridgebase.com"]
    start_urls = [
            "http://www.bridgebase.com/myhands/index.php"
            ]
    login_page = "http://www.bridgebase.com/myhands/myhands_login.php?t=%2Fmyhands%2Findex.php%3F" 

    # authentication
    def init_request(self):
        return scrapy.http.Request(url=self.login_page, callback=self.login)

    def login(self, response):
        return scrapy.http.FormRequest.from_response(
            response,
            formdata={'username': 'USERNAME', 'password': 'PASSWORD'},
            callback=self.check_login_response)

    def check_login_response(self, response):
        if "recent tournaments" in response.body:
            self.log("Login successful")
            return self.initialized()
        else:
            self.log("Login failed")
            print(response.body)

    # pipe the …
Run Code Online (Sandbox Code Playgroud)

python splash-screen scrapy

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

Tweepy流API:过滤用户

我试图简单地连接到Twitter streaming APIusing tweepy(和python 3),并从给定的单个用户流式传输所有推文.

我觉得这是可能的,所以我有以下简单的代码来做到这一点:

from tweepy import StreamListener
from tweepy import Stream
import tweepy

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)

class StdOutListener(StreamListener):

    def on_data(self, data):
        # process stream data here
        print(data)

    def on_error(self, status):
        print(status)

if __name__ == '__main__':
    listener = StdOutListener()
    twitterStream = Stream(auth, listener)
    twitterStream.filter(follow=['575930104'])
Run Code Online (Sandbox Code Playgroud)

当我从命令行运行它时,我只是从Twitter获得了一堆406代码.我试图使用tweepy的方式有什么明显的错误,或者"跟随"参数是不是设计用于我认为它做的事情?

编辑:我也发布了这个讨论板,仅供参考.

python twitter tweepy

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

pyplot:带有基数e的loglog()

Python(和matplotlib)新手来自R,所以我希望这个问题不是太愚蠢.我正在尝试在自然对数范围内制作loglog图.但经过一些谷歌搜索后,我无法以某种方式弄清楚如何强制pyplot在轴上使用基本e标度.我目前的代码:

import matplotlib.pyplot as pyplot 
import math

e = math.exp(1)
pyplot.loglog(range(1,len(degrees)+1),degrees,'o',basex=e,basey=e)
Run Code Online (Sandbox Code Playgroud)

degrees每个值的计数向量在哪里range(1,len(degrees)+1).由于某种原因,当我运行此代码时,pyplot不断给我一个在轴上具有2的幂的图.我觉得这应该很容易,但我很难过......

任何意见是极大的赞赏!

python matplotlib

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

在 Altair 中将垂直线叠加到绘图上

我有一个如下所示的数据框df

+---+------------+-----------+--------+
|   |    date    | violation | pounds |
+---+------------+-----------+--------+
| 0 | 2010-05-13 | N         | NaN    |
| 1 | 2015-04-22 | Y         | NaN    |
| 2 | 2009-08-12 | Y         | NaN    |
| 3 | 2006-06-01 | NaN       | 3732.0 |
| 4 | 2006-08-01 | NaN       | 1340.0 |
| 5 | 2006-10-01 | NaN       | 1310.0 |
+---+------------+-----------+--------+
Run Code Online (Sandbox Code Playgroud)

我想pounds用时间序列给出的水平坐标在垂直轴上绘制变量date,并将垂直线覆盖在violation不是 Nan 的地方。基本上,我想要下面的图表,除了在非 NaN 值为 的垂直条 …

python plot visualization pandas altair

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

SciPy:从 PMF 生成自定义随机变量

我正在尝试在 Python 中根据某种丑陋的分布生成随机变量。我有一个 PMF 的显式表达式,但它涉及一些乘积,这使得获取和反转 CDF 变得不那么愉快(请参阅下面的 PMF 显式形式的代码)。

本质上,我试图通过 PMF 在 Python 中定义一个随机变量,然后让内置代码完成从分布中采样的艰苦工作。如果 RV 的支撑是有限的,我知道该怎么做,但这里的支撑是可数无限的。

我目前正在尝试按照下面 @askewchan 的建议运行的代码是:

import scipy as sp
import numpy as np

class x_gen(sp.stats.rv_discrete):
    def _pmf(self,k,param):
        num = np.arange(1+param, k+param, 1)
        denom = np.arange(3+2*param, k+3+2*param, 1)

        p = (2+param)*(np.prod(num)/np.prod(denom))

        return p

pa_limit = limitrv_gen()
print pa_limit.rvs(alpha,n=1)
Run Code Online (Sandbox Code Playgroud)

但是,这会在运行时返回错误:

File "limiting_sim.py", line 42, in _pmf
    num = np.arange(1+param, k+param, 1)
TypeError: only length-1 arrays can be converted to Python scalars
Run Code Online (Sandbox Code Playgroud)

基本上,列表似乎在函数np.arange()内部不起作用def _pmf()。我不知道为什么。有人可以在这里启发我和/或指出解决办法吗?

编辑1: …

python numpy scipy

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

用于stat_smooth的smooth.Pspline包装器(在ggplot2中)

对不起,如果这个问题很简单,但是我想弄清楚如何在R中绘制某种类型的自然三次样条(NCS)并且它完全没有我.

之前的一个问题中,我学会了如何在ggplot中绘制由ns()命令生成的NCS,但我对如何在pspline包中生成稍微不同的NCS生成smooth.Pspline命令感兴趣.据我所知,这是唯一一个自动为CV给定数据集选择适当平滑罚分的包.

理想情况下,我可以提供smooth.Pspline作为ggplot2中stat_smooth图层的方法.我目前的代码如下:

plot <- ggplot(data_plot, aes(x=age, y=wOBA, color=playerID, group=playerID))
plot <- plot + stat_smooth(method = lm, formula = y~ns(x,4),se=FALSE)
Run Code Online (Sandbox Code Playgroud)

我想用smooth.Pspline的功能替换"lm"公式.我做了一些谷歌搜索,并找到了一个非常相似的B样条函数smooth.spline 的解决方案,由Hadley编写.但是我无法使其适应光滑.Pspline非常完美.有任何人对此有经验吗?

非常感谢!

plot r ggplot2

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

过滤图表工具中的子图

这是一个关于图形工具的一个荒谬的基本问题,这应该是很容易弄清楚如何使用文档来解决,但我正在旋转.我不怀疑文档是否全面,但它肯定不会让这很容易.

目标:给定图G,根据G的顶点列表提取诱导子图.

我知道我应该以GraphView某种方式这样做.我明白了.我也明白我需要为此做一个顶点PropertyMap.但究竟应该创造什么呢?

这里的文档非常缺乏.例如,PropertyMaps上页面说每个PropertyMap都可以是某种类型,但我还没弄清楚这意味着什么.这些类型代表什么?我什么时候想要使用另一种类型?鉴于显然PropertyMaps对图形工具的有效使用有多重要,我对文档的不清楚感到有点困惑.

对于这个问题,我得到了模糊的感觉,我需要使用布尔类型,因为我可能想要将子图中我想要的顶点设置为"true",而我不希望子图中的顶点为"false". " 但这是否意味着PropertyMap我创建的需要与原始图G中的节点数相同?或者我可以只提供一个节点列表,并以某种方式让它被理解为那些是唯一被设置为True?

python graph-tool

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

部分应用数据构造函数

我不明白为什么以下练习在第一原理的Haskell编程中 "有效" :

type Subject = String
type Verb = String
type Object = String

data Sentence =
    Sentence Subject Verb Object
    deriving (Eq, Show)

s1 = Sentence "dogs" "drool"
s2 = Sentence "Julie" "loves" "dogs"
Run Code Online (Sandbox Code Playgroud)

将其加载到ghci中表明它可以很好地解决问题,但为什么定义s1甚至有意义呢?我仍然是Haskell的新手,所以起初我认为这是因为在s1Haskell中隐含地让Object字符串为空.但是之后...

*Main> s1

<interactive>:13:1:
    No instance for (Show (Object -> Sentence))
      arising from a use of `print'
    Possible fix:
      add an instance declaration for (Show (Object -> Sentence))
    In a stmt of an interactive GHCi command: print …
Run Code Online (Sandbox Code Playgroud)

haskell currying partial-application

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

多态性:常数与函数

我是Haskell的新手,在" 第一原理"一书的Haskell编程中遇到了一个有点令人费解的例子.在第6章结束时突然想到以下内容不起作用:

constant :: (Num a) => a
constant = 1.0
Run Code Online (Sandbox Code Playgroud)

但是,以下工作正常:

f :: (Num a) => a -> a
f x = 3*x
Run Code Online (Sandbox Code Playgroud)

我可以输入任何数值x进入函数f,什么都不会破坏.它不仅限于采用整数.这对我来说很直观.但是常量的例子让我感到困惑.

在本书的reddit 线程上解释(释义),常量示例不起作用的原因是类型声明强制值constant只是比不具体的事物Num.因此,试图将值分配给它的是从一个子类NumFractional不洁净.

如果这个解释是正确的,那么我认为这两个例子看起来完全相反吗?在一种情况下,类型声明强制值尽可能通用.在另一种情况下,函数的可接受值可以是实现的任何Num.

谁能让我直截了当?

polymorphism haskell types

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

Haskell $运算符:为什么这不起作用?

Haskell Programming from First Principles一书中,有一个练习告诉我们编写一个函数,它接受一个带有空格的字符串,用空格分割它,并将非空间块加载到一个字符串列表中.我的第一次尝试是:

splitString :: String -> [String]
splitString str
  | str == "" = []
  | otherwise = takeWhile (/=' ') str : splitString $ drop 1 $ dropWhile (/=' ') str
Run Code Online (Sandbox Code Playgroud)

现在这不编译.如果我将第一个($)(右后splitString)替换为相应的括号对,如下所示:

takeWhile (/=' ') str : splitString (drop 1 $ dropWhile (/=' ') str)
Run Code Online (Sandbox Code Playgroud)

然后它工作.根据我迄今为止所学到的关于($)的内容,不应该两者相等吗?($)是正确的联想,因此在我看来应该发生的事情是什么

  1. dropWhile (/=' ') str 首先评估
  2. drop 1 (dropWhile (/=' ') str) 是下一个
  3. 然后结果传递给splitString.

相反,我得到一个错误,从ghc它说

Couldn't match expected type ‘[Char] -> [String]’
            with …
Run Code Online (Sandbox Code Playgroud)

haskell

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