小编mli*_*ner的帖子

在伪元素的 attr() 中使用元素的内容

我有以下文字:

<span class="page-number">42</span>
Run Code Online (Sandbox Code Playgroud)

我想创建一个伪元素,如下所示:

<span class="page-number">42</span>
Run Code Online (Sandbox Code Playgroud)

这样伪元素的内容就是元素的文本,在本例中为 42。我可以通过一些技巧来做类似的事情吗?

html css pseudo-element css-content

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

如何将XSLT 2.0日期持续时间转换为字符串?

我使用一些代码使用XSLT 2.0从另一个日期中减去一个日期:

<xsl:template match="moveInDate">
    <xsl:value-of select="current-date() - xs:date(.)"/>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

这是有效的,但它让我得到P2243D的答案,我假设它对应于"2243天的时期"(这在数学方面是正确的).

由于我只需要天数,而不是P和D,我知道我可以使用子串或类似的东西,但作为XSLT的新手,我很好奇是否有更好,更优雅的方式来做到这一点简单的字符串操作

math xslt duration date

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

功能差异很大但处理方式相似的模式和设计

我正在编写一些 Python 代码来抓取网站,我最终会得到越来越多的自定义抓取工具,每个大约 50 行长,并且从特定网站定制提取特定信息。

我的程序的第一次迭代是一个巨大的文件,它将网站作为参数,如果它识别出该网站并为其提供自定义代码(使用一个巨大的 case 语句来检查它是否识别该网站),则抓取该网站。

显然,这不是一个很好的设计,所以我想做的是将自定义抓取函数拉入它们自己的文件/类中,并有一个小脚本,我可以用它来按名称调用它们。例如:

scrape.py --site google
Run Code Online (Sandbox Code Playgroud)

我想要一个类似于以下内容的文件结构:

scrape.py
sites/
    google.py
    yahoo.py
    ...
    bing.py
Run Code Online (Sandbox Code Playgroud)

我还没有掌握面向对象,但我认识到这是对它的呼唤,而且我正在寻找的可能是一个常见的 OO 模式。

任何帮助正确重构此代码?

PS - 我看过 Scrapy,由于各种原因,这并不是我真正需要的。
PPS - 我实际上不是在抓取搜索网站,而是在抓取美国法院网站。

python oop design-patterns web-scraping

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

使用lxml和请求从XPath返回utf-8

我想弄清楚我xpath是否正确使用lxml的功能.这是我目前的代码,包括我们在一个相当大的抓取库中慢慢积累的所有变通方法,它们处理可怕的,可怕的输入:

import certifi, requests
from lxml import html
s = requests.session()
r = s.get(
    url,
    verify=certifi.where(),
    **request_dict
)

# Throw an error if a bad status code is returned.
r.raise_for_status()

# If the encoding is iso-8859-1, switch it to cp1252 (a superset)
if r.encoding == 'ISO-8859-1':
    r.encoding = 'cp1252'

# Grab the content
text = r.text
html_tree = html.fromstring(text)
Run Code Online (Sandbox Code Playgroud)

因此,如果这一切都正常,则requests用于r.encoding决定在r.text调用时如何创建unicode对象.大.我们接受那个unicode对象(text)并将其发送到ltml.html.fromstring(),它识别出它是unicode,然后给我们一个ElementTree.

这一切似乎都运作正常,但令人不安的是,当我这样做时:

html_tree.xpath('//text()')[0]
Run Code Online (Sandbox Code Playgroud)

哪个应该给我树中的第一个文本节点,我得到一个字符串,而不是一个unicode对象,我发现自己不得不写:

html_tree.xpath('//text()')[0].decode('utf8') …
Run Code Online (Sandbox Code Playgroud)

unicode xpath lxml utf-8 python-requests

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

如何在分布式环境中处理文件路径

我正在设置一个分布式芹菜环境来对PDF文件进行OCR.我有大约3M PDF和OCR是CPU绑定的,所以我们的想法是创建一个服务器集群来处理OCR.

在我写任务的时候,我有这样的事情:

@app.task
def do_ocr(pk, file_path):
    content = run_tesseract_command(file_path)
    item = Document.objects.get(pk=pk)
    item.content = ocr_content
    item.save()
Run Code Online (Sandbox Code Playgroud)

问题是我最好的方法是file_path在分布式环境中完成工作.人们通常如何处理这个问题?现在我的所有文件都只是存放在我们的一台服务器上的一个简单目录中.

distributed-computing filepath celery

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

如何使 Tesseract 更快

这是一个长镜头,但我不得不问。我需要任何可能使 Tesseract OCR 引擎更快的想法。我正在处理由大约 2000 万页文本组成的 200 万个 PDF,我需要尽可能地发挥性能。目前的估计是,如果我什么都不做,这将需要大约一年的时间才能完成。

我已经调整了输入图像以在那里获得一些提升,但我需要考虑其他方法。我认为对图像的改进不会让我在这一点上有所作为。

例如:

  • Tesseract 可以用优化标志或类似的东西重新编译吗?
  • 共享 CPU 内存或 GPU 可以付诸行动吗?
  • 我能以某种方式告诉 Tesseract 使用更多内存吗(我有很多)?
  • 有没有其他方法可以使受 CPU 限制的 C++ 程序更快?

目前,Tesseract 由我们的任务运行器 Celery 运行,它使用多处理来完成其工作。这样,我可以使服务器看起来像这样:

在此处输入图片说明

我(显然?)不知道我在说什么,因为我是一名 Python 开发人员,而 Tesseract 是用 C++ 编写的,但是如果有任何方法可以在这里得到提升,我会喜欢想法。

c++ python performance tesseract

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

在Python中生成正则表达式COULD匹配的值列表

我正在尝试使用正则表达式作为输入,并从那里生成正则表达式匹配的所有可能值.

因此,例如,如果正则表达式是"以a开头并以c结尾的三个字母单词",那么代码将生成一个包含值[aac,abc,acc,adc,a1c ....]的列表.

是否有捷径可寻?我正在使用python.

python regex

2
推荐指数
1
解决办法
1827
查看次数

如何从外部 IP 地址访问 Solr?

我在 Jetty 容器中的本地主机上的服务器上运行 Solr。

这似乎是一个显而易见的问题,但是如何从服务器本身外部访问 Web 界面,例如从外部 IP 地址访问?显然,身份验证作为任何解决方案的一部分都很重要。

如果这是一个很好的解决方案,我也在服务器上运行 Apache2。我很惊讶我找不到任何关于此的信息。

authentication solr jetty

2
推荐指数
1
解决办法
7176
查看次数

如何在Python中禁用socketserver的输出?

我设置了socketserver来运行一些单元测试,并将其日志输出到控制台.

有没有办法禁用它?

这是我正在运行的代码:

class TestServer(SocketServer.TCPServer):
    allow_reuse_address = True


class ScraperExampleTest(unittest.TestCase):
    def setUp(self):
        # Due to requests not supporting the 'file' scheme, we are forced to run
        # our own server. See: https://github.com/kennethreitz/requests/issues/847
        Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
        httpd = TestServer(('', PORT), Handler)
        httpd_thread = threading.Thread(target=httpd.serve_forever)
        httpd_thread.setDaemon(True)
        httpd_thread.start()
Run Code Online (Sandbox Code Playgroud)

python unit-testing stdout socketserver

2
推荐指数
1
解决办法
1376
查看次数

如何使用Python字符串加载PhantomJS

我使用PhantomJS作为Selenium webdriver,我有一个内存中的网页字符串.

如何将字符串加载到PhantomJS中,就像我做的那样driver.get()

我看了一遍,但找不到这样的东西,没有把文件写到磁盘GETing上.但这感觉有点疯狂.

python selenium phantomjs

2
推荐指数
1
解决办法
1198
查看次数