小编eN_*_*Joy的帖子

加载扩展部分usr_cert时出错

我在Ubuntu 14.04盒子上运行openvpn.设置很好,直到OpenSSL升级,然后当我尝试使用easy-rsa创建新的客户端证书时,我得到了以下消息:

root@:easy-rsa# ./pkitool onokun
Using Common Name: onokun
Generating a 2048 bit RSA private key
.+++
........+++
writing new private key to 'onokun.key'
-----
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
Error Loading extension section usr_cert
3074119356:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_lib.c:335:group=CA_default name=email_in_dn
3074119356:error:2207507C:X509 V3 routines:v2i_GENERAL_NAME_ex:missing value:v3_alt.c:537:
3074119356:error:22098080:X509 V3 routines:X509V3_EXT_nconf:error in extension:v3_conf.c:93:name=subjectAltName, value=onokun
Run Code Online (Sandbox Code Playgroud)

此问题与报告的错误不同,即which opensslcnf脚本无法找到openssl.cnf要使用的匹配版本(上面的消息显示openssl-1.0.0.cnf).我进行了谷歌搜索,但没有找到答案.

以下是一些环境信息:

## openvpn
OpenVPN 2.3.2 i686-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [eurephia] [MH] [IPv6] built on Feb  4 2014
Originally developed by James …
Run Code Online (Sandbox Code Playgroud)

ssl openssl openvpn

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

Scrapy CrawlSpider + Splash:如何通过linkextractor关注链接?

我有以下代码部分工作,

class ThreadSpider(CrawlSpider):
    name = 'thread'
    allowed_domains = ['bbs.example.com']
    start_urls = ['http://bbs.example.com/diy']

    rules = (
        Rule(LinkExtractor(
            allow=(),
            restrict_xpaths=("//a[contains(text(), 'Next Page')]")
        ),
            callback='parse_item',
            process_request='start_requests',
            follow=True),
    )

def start_requests(self):
    for url in self.start_urls:
        yield SplashRequest(url, self.parse_item, args={'wait': 0.5})

def parse_item(self, response):
    # item parser
Run Code Online (Sandbox Code Playgroud)

代码只会运行start_urls但不会遵循指定的链接restricted_xpaths,如果我注释掉start_requests()方法和process_request='start_requests',规则中的行,它将运行并跟踪预期的链接,当然没有js渲染.

我已阅读了两个相关问题,CrawlSpider与飞溅卡住第一URL后CrawlSpider飞溅和专变scrapy.Request()SplashRequest()start_requests()方法,但似乎并没有工作.我的代码出了什么问题?谢谢,

python web-crawler scrapy scrapy-splash splash-js-render

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

使用外键scrapy djangoitem

没有接受答案的情况下,这里的问题被问到了Scipes上的外键,所以我在这里用更明确的最小设置来重新提出问题:

django模型:

class Article(models.Model):
    title = models.CharField(max_length=255)
    content = models.TextField()
    category = models.ForeignKey('categories.Category', null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

注意category这里的定义是如何无关紧要的,但确实如此ForeignKey.所以,在django shell中,这可以工作:

c = Article(title="foo", content="bar", category_id=2)
c.save()
Run Code Online (Sandbox Code Playgroud)

scrapy项目:

class BotsItem(DjangoItem):
    django_model = Article
Run Code Online (Sandbox Code Playgroud)

scrapy管道:

class BotsPipeline(object):
    def process_item(self, item, spider):
        item['category_id'] = 2
        item.save()
        return item
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,scrapy抱怨:

exceptions.KeyError: 'BotsItem does not support field: category_id'
Run Code Online (Sandbox Code Playgroud)

公平,因为category_id没有出现在django模型中,我们从中得到了scrapy项目.为了记录,如果我们有管道(假设我们有一个类别foo):

class BotsPipeline(object):
    def process_item(self, item, spider):
        item['category'] = 'foo'
        item.save()
        return item
Run Code Online (Sandbox Code Playgroud)

现在scrapy抱怨:

exceptions.TypeError: isinstance() arg 2 must …
Run Code Online (Sandbox Code Playgroud)

python django scrapy

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

python请求返回类似于文件的流对象

我创建了一个这样的请求对象:

 obj.mp3 = requests.get('http://foo.com/bar.mp3', stream=True)
Run Code Online (Sandbox Code Playgroud)

我认为我可以将这个obj.mp3对象提供给任何需要文件或URI的音频播放器,显然这个想法是错误的:没有播放.以下是完整代码:

#views.py

class ArticleDetailView(DetailView):
    model = Article
    template_name = 'song.html'

    def get_object(self):
        obj = super(ArticleDetailView, self).get_object()

        #code to store mp3 url in obj.mp3 and other stuff

        if obj.mp3:
            obj.mp3 = requests.get(obj.mp3, stream=True).content
        return obj

#song.html
<div class="audio">
  <audio src={{ article.mp3 }} type="audio/mpeg"> 
</div>
Run Code Online (Sandbox Code Playgroud)

将回报requests视为可以与玩家一起传播的东西的正确方法是什么?我知道至少我可以写obj.mp3一个文件,然后只是将播放器指向文件位置,但我试图避免将文件写入磁盘.

谢谢,

python django python-requests

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