小编ffl*_*ing的帖子

使用Python解析HTML

我正在寻找一个用于Python的HTML Parser模块,它可以帮助我以Python列表/字典/对象的形式获取标签.

如果我有一份表格的文件:

<html>
<head>Heading</head>
<body attr1='val1'>
    <div class='container'>
        <div id='class'>Something here</div>
        <div>Something else</div>
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后它应该给我一种方法来通过HTML标签的名称或ID访问嵌套标签,这样我基本上可以让它给我div标签中class='container'包含的body标签中的内容/文本,或类似的东西.

如果您使用过Firefox的"Inspect element"功能(查看HTML),您就会知道它以一种漂亮的嵌套方式为您提供所有标记,就像树一样.

我更喜欢内置模块,但可能会有点太多.


我在Stack Overflow和互联网上的一些博客上经历了很多问题,其中大多数都建议使用BeautifulSoup或lxml或HTMLParser,但其中很少有人详细介绍了这些功能,最后只是讨论哪一个更快/更有效.

python html-parsing xml-parsing

166
推荐指数
5
解决办法
24万
查看次数

__init__为unittest.TestCase

我想unittest.TestCase在初始化时给类添加一些东西,但我无法弄清楚如何去做.

现在我这样做:

#filename test.py

class TestingClass(unittest.TestCase):

    def __init__(self):
        self.gen_stubs()

    def gen_stubs(self):
        # Create a couple of tempfiles/dirs etc etc.
        self.tempdir = tempfile.mkdtemp()
        # more stuff here
Run Code Online (Sandbox Code Playgroud)

我希望在整个测试集中只生成一次所有存根.我无法使用,setUpClass()因为我正在使用Python 2.4(我无法在python 2.7上工作).

我在这做错了什么?

我收到此错误:

 `TypeError: __init__() takes 1 argument (2 given)` 
Run Code Online (Sandbox Code Playgroud)

... __init__当我使用命令运行它时,我将所有存根代码移动到其他错误python -m unittest -v test.

python unit-testing

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

通过Python创建文件和目录

我在创建目录然后打开/创建/写入指定目录中的文件时遇到问题.原因似乎不清楚.我正在使用os.mkdir()和

path=chap_name
print "Path : "+chap_path                       #For debugging purposes
if not os.path.exists(path):
    os.mkdir(path)
temp_file=open(path+'/'+img_alt+'.jpg','w')
temp_file.write(buff)
temp_file.close()
print " ... Done"
Run Code Online (Sandbox Code Playgroud)

我收到了错误

OSError: [Errno 2] No such file or directory: 'Some Path Name'

路径的形式为'带有未转义空格的文件夹名称'

我在这做错了什么?


更新:我尝试在不创建目录的情况下运行代码

path=chap_name
print "Path : "+chap_path                       #For debugging purposes
temp_file=open(img_alt+'.jpg','w')
temp_file.write(buff)
temp_file.close()
print " ... Done"
Run Code Online (Sandbox Code Playgroud)

仍然出错.进一步困惑.


更新2:问题似乎是img_alt,它在某些情况下包含'/',这会导致麻烦.

所以我需要处理'/'.反正有没有逃脱'/'或删除唯一的选择?

python directory file

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

NS_ERROR_FAILURE:Firefox失败

我正在使用javascript的XMLHttpRequest对象向另一个页面发送请求(不是在同一服务器或域名上)我在firefox中遇到ns_error_failure错误,但Javascript在Google Chrome中有效,在线搜索之后似乎是因为firefox的XSS政策.不允许跨域请求.

反正有没有解决这个问题,让JS在Chrome和Firefox中运行?


请随时询问您认为需要的其他详细信息!


这是我正在使用的代码.

"use strict";

function showFixed(username)
{
    console.log("Entered script");

    var url = 'https://api-dev.bugzilla.mozilla.org/latest/bug'
        + '?quicksearch='
        + encodeURIComponent('FIXED @'+username);
    displayBug(url);
}

function showPending(username)
{
    console.log("Entered script");

    var url = 'https://api-dev.bugzilla.mozilla.org/latest/bug'
        + '?quicksearch='
        + encodeURIComponent('@'+username);
    displayBug(url);
}

function showCC(username)
{
    console.log("Entered script");

    var url = 'https://api-dev.bugzilla.mozilla.org/latest/bug'
        + '?quicksearch='
        + encodeURIComponent('cc:'+username);
    displayBug(url);
}

function displayBug(url)
{
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET",url,false);
    xmlhttp.send();
    var text = xmlhttp.responseText;

    var json = JSON.parse(text);

    for(var i=0;i<json.bugs.length;i++)
    {
        var tempRow = document.createElement('tr');

        var tempId …
Run Code Online (Sandbox Code Playgroud)

javascript xss ajax firefox xmlhttprequest

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

在新的ECMA5 Javascript标准中的argument.callee.name替代方案

我正在努力将一些旧代码移植到'严格模式',在ECMA5标准中,argument.callee和类似的argument.caller等的替代方法是什么?


添加信息:我没有说明为什么我需要argument.caller/callee.

我正在移植的代码正在使用

assert.ok(elemNode, arguments.callee.name + ": Entity - " + entityId + " has been found");
Run Code Online (Sandbox Code Playgroud)

如果它是简单的递归我可以使用函数name(){... function()...},但我似乎无法找到如何处理上面的代码.

javascript ecmascript-5

6
推荐指数
2
解决办法
3551
查看次数

推送到通过HTTP本地托管的git存储库

我希望http://localhost:8000/tehCode.git使用该python -m "SimpleHTTPServer"命令推送到servered 托管的git存储库.

我收到一个错误

error: Cannot access URL http://localhost:8000/tehCode.git/, return code 22
fatal: git-http-push failed
Run Code Online (Sandbox Code Playgroud)

我可以很好地克隆这个存储库,但我无法推动它.假设我还想使用Python SimpleHTTPServer,我该怎么做?

我已经看过了

  1. 无法使用http/https将Git推送到远程存储库
  2. https://superuser.com/questions/473177/git-push-fatal-failed

但他们似乎正在与Apache合作,大多数解决方案都是通过编辑Apache的配置文件.

git

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

大型数据集的多标签分类

我正在解决多标签分类问题.我有大约6百万行要处理,这些行是巨大的文本块.它们在单独的列中标记有多个标记.

关于scikit库可以帮助我扩展代码的任何建议.我在其中使用One-vs-Rest和SVM.但它们的规模不超过90-100k行.

classifier = Pipeline([
('vectorizer', CountVectorizer(min_df=1)), 
('tfidf', TfidfTransformer()),
('clf', OneVsRestClassifier(LinearSVC()))])
Run Code Online (Sandbox Code Playgroud)

python nlp classification machine-learning scikit-learn

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

bash中的奇怪行为(可能还有其他shell?)

当我做:

/bin/bash -c 'cat /proc/$$/cmdline'
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

cat/proc/25050/cmdline
Run Code Online (Sandbox Code Playgroud)

而我预期的输出是:

/bin/bash -c 'cat /proc/$$/cmdline'
Run Code Online (Sandbox Code Playgroud)

另一方面,当我这样做时:

/bin/bash -c 'echo $$; cat /proc/$$/cmdline'
Run Code Online (Sandbox Code Playgroud)

我得到了预期的输出,即:

28259
/bin/bash-cecho $$; cat /proc/$$/cmdline
Run Code Online (Sandbox Code Playgroud)

似乎$$是猫的pid而不是bash/sh的pid.
为什么是这样?
shell是否进行某种解析和execve()样式替换?如果是这样,它甚至在取代之前如何知道猫的PID?

linux bash shell

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

我可以查询远程 docker 注册表以获取映像信息(例如操作系统)吗?

是否有任何命令可以针对可以返回映像操作系统的 docker 注册表(公共和私有)运行?具体来说,我希望区分 Linux 和 Windows 映像,而不是区分 linux 发行版。

原因是我们今天有一个基于 docker 的构建系统,我们正试图为其添加对 Windows 容器和 LCOW 的支持。理论上,Linux 构建可以在 Windows 或 Linux 服务器上进行,因此我们希望该工具能够在适当的时候自动添加 dockersudo命令和--platformpull/run 命令(以及其他一些东西)。但是,这需要我们自动检测映像的操作系统。我查看了 docker 文档,但找不到对此类查询的任何支持,但也许我错过了一些东西。

在我写这篇文章时,我意识到如果 docker 客户端可以自动推断出图像的操作系统,他们可能会将此检测内置到客户端中,而不是--platform在所有各种 docker 命令上引入新参数。

docker

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

在 Fedora 上设置 OpenGL

我一直在尝试为我的计算机设置(安装并获取正确的库),以便我可以开始图形编程。

我访问了 OpenGL 站点,发现它没有帮助。我尝试了 Wikibooks 的设置页面,但是那里有特定于 Debian 和 Debian 之类的系统的安装信息,我找不到 Fedora 的相应内容。

我知道 C 和 python,如果可能的话,我更喜欢在 C 中工作,我确实找到了 PyOpenGL.noarch 并使用 yum 安装了它。

我查了几个其他网站并没有找到太多,但我设法安装了 freeglut-devel

我检查并在 /usr/include/GL 文件夹中找到了 GL 库,但是当我尝试运行以下代码时{取自 wikibooks 站点本身,所以我假设它有效}:

#include <stdio.h> /* printf */
#include <GL/glut.h> /* glut graphics library */
/* 
* Linux c console program 
* gcc f.c -lglut
* ./a.out
* */
main(int argc, char **argv)
{
   glutInit(&argc, argv);
   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
   glutCreateWindow("red 3D lighted cube");
   printf("GL_VERSION = %s\n",glGetString(GL_VERSION) ); /* …
Run Code Online (Sandbox Code Playgroud)

c python linux opengl fedora

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