小编Ste*_*anH的帖子

Scrapy - 解析页面以提取项目 - 然后关注并存储项目URL内容

我有一个关于如何在scrapy中做这件事的问题.我有一只蜘蛛爬行列出物品页面.每次找到具有项目的列表页面时,都会调用parse_item()回调来提取项目数据和产生项目.到目前为止,一切都很好.

但是每个项目,除了其他数据之外,还有一个网址,其中包含有关该项目的更多详细信息.我想跟随该URL并在另一个项目字段(url_contents)中存储该项目的URL的获取内容.

而且我不确定如何组织代码来实现这一点,因为两个链接(列表链接和一个特定的项链接)遵循不同的方式,在不同的时间调用回调,但我必须在相同的项处理中关联它们.

到目前为止,我的代码如下所示:

class MySpider(CrawlSpider):
    name = "example.com"
    allowed_domains = ["example.com"]
    start_urls = [
        "http://www.example.com/?q=example",
    ]

    rules = (
        Rule(SgmlLinkExtractor(allow=('example\.com', 'start='), deny=('sort='), restrict_xpaths = '//div[@class="pagination"]'), callback='parse_item'),
        Rule(SgmlLinkExtractor(allow=('item\/detail', )), follow = False),
    )


    def parse_item(self, response):
        main_selector = HtmlXPathSelector(response)
        xpath = '//h2[@class="title"]'

        sub_selectors = main_selector.select(xpath)

        for sel in sub_selectors:
            item = ExampleItem()
            l = ExampleLoader(item = item, selector = sel)
            l.add_xpath('title', 'a[@title]/@title')
            ......
            yield l.load_item()
Run Code Online (Sandbox Code Playgroud)

python scrapy

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

向Kubernetes中的容器发布大于400 KB有效负载的POST失败

我在AWS中使用EKS(Kubernetes),并且在将大约400千字节的有效负载发布到该Kubernetes容器中运行的任何Web服务器时遇到问题。我遇到了某种限制,但不是大小限制,似乎很多时候都可以达到约400 KB,但有时却可以(使用Python请求进行测试)

requests.exceptions.ChunkedEncodingError: ("Connection broken: ConnectionResetError(104, 'Connection reset by peer')", ConnectionResetError(104, 'Connection reset by peer'))
Run Code Online (Sandbox Code Playgroud)

我用不同的容器(Alpine上的python Web服务器,CentOS上的Tomcat服务器,nginx等)进行了测试。

我将大小增加到400 Kbytes以上,得到的结果越一致:通过对等方重置连接。

有任何想法吗?

docker kubernetes

13
推荐指数
2
解决办法
478
查看次数

HTML5文件上传的单元测试

有没有办法使用HTML 5 File API进行javascript单元测试以上传文件?例如,我有代码:

<form method="POST" enctype="multipart/form-data">
  <input type="file" id="fileselect" name="fileselect[]" multiple="multiple"/>
</form>

<script type="text/javascript">
   function fileSelectHandler(e) {
       var files = e.target.files || e.dataTransfer.files;
       // at this point, files is a FileList object
   }

   var fileselect = document.getElementById("fileselect");
   fileselect.addEventListener("change", fileSelectHandler, false);
</script>
Run Code Online (Sandbox Code Playgroud)

所以我想用javascript自动化这个,所以我可以对它进行单元测试.所以我需要触发更改事件,并以某种方式传递文件.最后,每个文件应该是一个HTML 5 File对象,带有我想要的自定义路径.

javascript html5

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

Emacs dired 模式和 Isearch

我最近发现了 Emacs 的 dired 模式的一些强大功能和易用性。但在 Krusader 中,我只是开始按文件夹/文件的第一个字母,然后按 Enter,所以我深入,然后搜索另一个文件夹,聚焦,按 Enter 直到找到我应该打开的文件。

我现在如何做到这一点:

  • 按 Ctrl+S 进行 isearch
  • 按字母查找文件夹
  • 按 Enter 键(或其他组合)一次以退出 I-search
  • 按 Enter 键进入文件夹或打开文件(要打开文件,我知道我还有其他字母)

我真的需要让这件事变得更容易。所以我想要的是当我按一次 Enter 键时:

  • 逃脱搜索
  • 输入文件夹(或打开文件)

当然,第二个主要的事情是默认情况下处于某种具有 dired 的 isearch 模式,仅通过键入进行导航,并且仅当按 ESC 时才处于单个字母具有命令含义的 dired 模式。我不确定第二个主要的事情是否容易实现或推荐用于 dired。但我相信最重要的事情应该可以通过一些智能 Lisp 行来完成,但我不知道:)

感谢你们,

斯特凡

emacs dired

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

将CryptoJS的CryptoMD5状态保存为字符串并稍后恢复

我在上传期间逐渐计算大文件的MD5哈希,然后在某些时候我想保存localStorage到目前为止我计算的HTML5 ,以便稍后恢复.

据我所知,localStorage可以存储字符串,因此我必须将渐进式MD5值存储为字符串,然后在用户稍后打开浏览器时将其还原.

基本上我的代码看起来像这样:

var md5_full = CryptoJS.algo.MD5.create();

var wordArray = CryptoJS.lib.WordArray.create(chunk);

md5_full.update(wordArray);
Run Code Online (Sandbox Code Playgroud)

此时,我想转换md5_full为字符串,以便能够保存到localStorage.然后,稍后,当用户想要恢复上传时,能够检索md5_fullfrom localStorage,unstringify,并继续使用块更新它.

最后我应该能够调用md5_full.finalize();以获得最终的完整MD5哈希摘要.

javascript cryptojs

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

标签 统计

javascript ×2

cryptojs ×1

dired ×1

docker ×1

emacs ×1

html5 ×1

kubernetes ×1

python ×1

scrapy ×1