我想在Scrapy(屏幕抓取器/网络爬虫)中实现一些单元测试.由于项目是通过"scrapy crawl"命令运行的,我可以通过像nose这样的东西运行它.由于scrapy是建立在扭曲的基础之上,我可以使用它的单元测试框架试用吗?如果是这样,怎么样?否则,我想获得的鼻子工作.
更新:
我一直在谈论Scrapy-Users,我想我应该"在测试代码中构建Response,然后使用响应调用该方法并声明[I]在输出中获得预期的项目/请求".我似乎无法让这个工作.
我可以构建一个单元测试测试类并进行测试:
然而,它最终会产生这种追溯.任何洞察力为什么?
我已通读了手册,但找不到答案.给定一个磁力链接我想生成一个torrent文件,以便它可以在下次启动时加载,以避免重新加载元数据.我尝试过快速恢复功能,但是当我这样做时仍然需要获取元数据,这可能需要相当长的时间.我见过的例子是为新的torrent创建torrent文件,我想在其中创建一个匹配磁体uri.
我想使用Matplotlib和pyplot生成一个svg图像,用于Django框架.到目前为止,我有它生成链接到页面的图像文件,但有没有办法直接获取svg图像作为unicode字符串,而无需写入文件系统?
我在MongoDB中建立了一个庞大的银行数据库.我可以轻松地获取此信息并在其中创建索引.例如,我希望能够匹配银行名称'Eagle Bank&Trust Co of Missouri'和'Eagle Bank and Trust Company of Missouri'.以下代码适用于简单模糊这样,但无法实现上述匹配:
from whoosh.index import create_in
from whoosh.fields import *
schema = Schema(name=TEXT(stored=True))
ix = create_in("indexdir", schema)
writer = ix.writer()
test_items = [u"Eagle Bank and Trust Company of Missouri"]
writer.add_document(name=item)
writer.commit()
from whoosh.qparser import QueryParser
from whoosh.query import FuzzyTerm
with ix.searcher() as s:
qp = QueryParser("name", schema=ix.schema, termclass=FuzzyTerm)
q = qp.parse(u"Eagle Bank & Trust Co of Missouri")
results = s.search(q)
print results
Run Code Online (Sandbox Code Playgroud)
给我:
<Top 0 Results for And([FuzzyTerm('name', u'eagle', boost=1.000000, minsimilarity=0.500000, …Run Code Online (Sandbox Code Playgroud) 我无法获得:Java命令在eclim中工作.当我运行它时,我得到:
java.lang.RuntimeException: Required setting 'org.eclim.java.run.mainclass' has not been set.
at org.eclim.plugin.jdt.command.src.JavaCommand.execute(JavaCommand.java:107)
at org.eclim.command.Main.main(Main.java:89)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.martiansoftware.nailgun.NGSession.run(NGSession.java:334)
Run Code Online (Sandbox Code Playgroud)
似乎有很多解释如何解决这个问题,例如这篇文章在SO或这里,但他们都说通过"设置项目的org.eclim.java.run.mainclass属性":ProjectSettings.我的问题是我将它设置为什么?无论我在尝试编写更改时放置什么,vim都说"操作包含错误.有关详细信息,请参阅位置列表."
假设我有两个词典:
a = {'a': 1, 'b': 2, 'c': 3}
b = {'b': 2, 'c': 3, 'd': 4, 'e': 5}
Run Code Online (Sandbox Code Playgroud)
什么是找到两者之间的非相互项目的最pythonic方式,以便我a和b我得到:
{'a': 1, 'd': 4, 'e': 5}
Run Code Online (Sandbox Code Playgroud)
我以为:
{key: b[key] for key in b if not a.get(key)}
Run Code Online (Sandbox Code Playgroud)
但这只是一种方式(b项不在a)和
a_only = {key: a[key] for key in a if not b.get(key)}.items()
b_only = {key: b[key] for key in b if not a.get(key)}.items()
dict(a_only + b_only)
Run Code Online (Sandbox Code Playgroud)
接缝非常凌乱.还有其他方法吗?
python ×6
scrapy ×2
c++ ×1
django ×1
eclim ×1
fuzzy-search ×1
java ×1
libtorrent ×1
matplotlib ×1
nose ×1
svg ×1
unit-testing ×1
vim ×1
whoosh ×1