小编ale*_*cxe的帖子

我怎么能从Twitter的流媒体API中消费推文并将它们存储在mongodb中

我需要开发一个应用程序,让我跟踪推文并将它们保存在一个研究项目的mongodb中(因为你可能会收集,我是一个菜鸟,所以请耐心等待我).我发现这段代码通过我的终端窗口发送推文:

import sys
import tweepy

consumer_key=""
consumer_secret=""
access_key = ""
access_secret = "" 


auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)

class CustomStreamListener(tweepy.StreamListener):
    def on_status(self, status):
        print status.text

    def on_error(self, status_code):
        print >> sys.stderr, 'Encountered error with status code:', status_code
        return True # Don't kill the stream

    def on_timeout(self):
        print >> sys.stderr, 'Timeout...'
        return True # Don't kill the stream

sapi = tweepy.streaming.Stream(auth, CustomStreamListener())
sapi.filter(track=['Gandolfini'])
Run Code Online (Sandbox Code Playgroud)

有没有办法可以修改这段代码,以便不是让我的屏幕上有推文流,而是将它们发送到我的mongodb数据库?

谢谢

python twitter mongodb pymongo tweepy

20
推荐指数
2
解决办法
7469
查看次数

Django manage.py自定义命令可以返回一个值吗?怎么样,为什么不呢?

以下文档:https: //docs.djangoproject.com/en/dev/howto/custom-management-commands/

我创建了自己的自定义命令(称为其他命令,但示例如下所示):

from django.core.management.base import BaseCommand, CommandError
from polls.models import Poll

class Command(BaseCommand):
    args = '<poll_id poll_id ...>'
    help = 'Closes the specified poll for voting'

    def handle(self, *args, **options):
        for poll_id in args:
            try:
                poll = Poll.objects.get(pk=int(poll_id))
            except Poll.DoesNotExist:
                raise CommandError('Poll "%s" does not exist' % poll_id)

            poll.opened = False
            poll.save()

            self.stdout.write('Successfully closed poll "%s"' % poll_id)

        return "Yay"
Run Code Online (Sandbox Code Playgroud)

问题是如何返回像"Yay"这样的字符串不起作用?我做错了还是不可能?

当我从我的视图中调用自定义命令时,我执行以下操作:

     value = call_command('call_custom_command', parameter)
     print value
Run Code Online (Sandbox Code Playgroud)

但该值显示为无.

python django django-commands

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

使用selenium webdriver在windows上设置firefox二进制文件的路径

我正在尝试构建一个实用程序函数来向浏览器输出漂亮的汤代码我有以下代码:

def bs4_to_browser(data):

    from selenium import webdriver

    driver = webdriver.Firefox(path="F:\FirefoxPortable\Firefox.exe")
    driver.get("about:blank")

    data = '<h1>test</h1>'  # supposed to come from BeautifulSoup
    driver.execute_script('document.body.innerHTML = "{html}";'.format(html=data))

    return
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到:

TypeError at /providers/
__init__() got an unexpected keyword argument 'path'
Run Code Online (Sandbox Code Playgroud)

我正在使用win7.如何设置便携式firefox可执行文件的路径?

python firefox selenium selenium-webdriver

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

通过selenium进行浏览器性能测试

我们protractor用于测试内部AngularJS应用程序.

除了功能测试之外,我们protractor-perf还会检查性能回归,其帮助基于nodejs browser-perf库.因为,"性能是一种功能".

随着protractor-perf我们可以测量并同时使浏览器的行为,主张不同的性能特点,例如:

browser.get('http://www.angularjs.org');

perf.start(); // Start measuring the metrics
element(by.model('todoText')).sendKeys('write a protractor test');
element(by.css('[value="add"]')).click();
perf.stop(); // Stop measuring the metrics 

if (perf.isEnabled) { // Is perf measuring enabled ?
    // Check for perf regressions, just like you check for functional regressions
    expect(perf.getStats('meanFrameTime')).toBeLessThan(60); 
};
Run Code Online (Sandbox Code Playgroud)

现在,对于另一个内部应用程序,我们有一组用Python编写的基于selenium的测试.

是否可以使用selenium-python检查性能回归,还是应该使用protractor能够编写浏览器性能测试来重写测试?

python selenium performance-testing selenium-webdriver protractor

20
推荐指数
2
解决办法
6917
查看次数

Django将变量从基于类的视图传递给模板

如果我有一个基于类的视图,像这样,

class SomeView (View):
    response_template='some_template.html'
    var1 = 0
    var2 = 1

    def get(self, request, *args, **kwargs):
        return render_to_response(self.response_template, locals(), context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

我的问题是,在模板中some_template.html,我如何访问var1var2?据我所知,locals()这种方法只是将所有局部变量转储到模板中,到目前为止,该模板运行良好.但是这些其他变量在技术上并不是"本地的",它们是一个类的一部分,所以如何将它们传递给它们?

谢谢!

django class django-templates django-views django-class-based-views

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

修补在另一个函数中导​​入的函数

为了避免循环导入,我被迫定义一个看起来像这样的函数:

# do_something.py

def do_it():
    from .helpers import do_it_helper
    # do stuff
Run Code Online (Sandbox Code Playgroud)

现在我希望能够通过do_it_helper修补来测试这个功能.如果导入是顶级导入,

class Test_do_it(unittest.TestCase):
    def test_do_it(self):
        with patch('do_something.do_it_helper') as helper_mock:
            helper_mock.return_value = 12
            # test things
Run Code Online (Sandbox Code Playgroud)

会工作得很好.但是,上面的代码给了我:

AttributeError: <module 'do_something'> does not have the attribute 'do_it_helper'
Run Code Online (Sandbox Code Playgroud)

一时兴起,我也尝试将补丁语句更改为:

with patch('do_something.do_it.do_it_helper') as helper_mock:
Run Code Online (Sandbox Code Playgroud)

但这产生了类似的错误.有没有办法模拟这个函数,因为我被迫在它使用的函数中导入它?

python testing unit-testing mocking python-unittest

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

函数参数中裸星号的目的是什么?

我已经看到了这个问题(这不是重复的):Python在函数参数中显示星号

在python-3.x中你可以*为函数参数添加一个裸,这意味着(引自docs):

"*"或"*identifier"之后的参数是仅关键字参数,并且只能传递使用的关键字参数.

好的,我已经定义了一个函数:

>>> def f(a, b, *, c=1, d=2, e=3):
...     print('Hello, world!')
... 
Run Code Online (Sandbox Code Playgroud)

我可以通过c,de变量值只能通过指定关键字:

>>> f(1, 2, 10, 20, 30)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: f() takes 2 positional arguments but 5 were given
>>> f(1, 2, c=10, d=20, e=30)
Hello, world!
Run Code Online (Sandbox Code Playgroud)

问题是:

  • 这种限制/语法糖的动机是什么?
  • 它涵盖了哪些用例?
  • 它真的用在切换到python3的第三方库中吗?

一些"真实世界"的例子会有很大帮助.提前致谢.

python arguments function keyword-argument python-3.x

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

将lxml设置为默认的BeautifulSoup解析器

我正在进行网络抓取项目,并遇到速度问题.为了尝试修复它,我想使用lxml而不是html.parser作为BeautifulSoup的解析器.我已经能够做到这一点:

soup = bs4.BeautifulSoup(html, 'lxml')
Run Code Online (Sandbox Code Playgroud)

但我不想'lxml'每次打电话给BeautifulSoup都要反复输入.有没有办法在程序开始时设置一次使用哪个解析器?

html python lxml beautifulsoup html-parsing

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

getLocationAbsUrl vs getCurrentUrl

在量角器中,全局可用browser对象有两种方法:

返回AngularJS中的当前绝对URL.

计划命令以检索当前页面的URL.

目前尚不清楚和明显两者之间有什么区别.到目前为止,我一直在使用getCurrentUrl().

我们应该何时使用getLocationAbsUrl()?它包含哪些用例?


我记不起与getLocationAbsUrl()其他selenium语言绑定类似的任何内容.它看起来非常类似于量角器.

javascript selenium angularjs selenium-webdriver protractor

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

Spark SQL Row_number()PartitionBy Sort Desc

我已经row_number() partitionBy使用Window在Spark中成功创建了一个by,但是希望通过降序对其进行排序,而不是默认的升序.这是我的工作代码:

from pyspark import HiveContext
from pyspark.sql.types import *
from pyspark.sql import Row, functions as F
from pyspark.sql.window import Window

data_cooccur.select("driver", "also_item", "unit_count", 
    F.rowNumber().over(Window.partitionBy("driver").orderBy("unit_count")).alias("rowNum")).show()
Run Code Online (Sandbox Code Playgroud)

这给了我这个结果:

 +------+---------+----------+------+
 |driver|also_item|unit_count|rowNum|
 +------+---------+----------+------+
 |   s10|      s11|         1|     1|
 |   s10|      s13|         1|     2|
 |   s10|      s17|         1|     3|
Run Code Online (Sandbox Code Playgroud)

在这里我添加desc()以降序:

data_cooccur.select("driver", "also_item", "unit_count", F.rowNumber().over(Window.partitionBy("driver").orderBy("unit_count").desc()).alias("rowNum")).show()
Run Code Online (Sandbox Code Playgroud)

并得到此错误:

AttributeError:'WindowSpec'对象没有属性'desc'

我在这做错了什么?

python window-functions apache-spark apache-spark-sql pyspark

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