首页 > 解决方案 > 如何获取 scrapyrt 的 POST 元数据?

问题描述

在 scrapyrt 的 POST 文档中,我们可以像这样传递 JSON 请求,但是如何访问 start_requests 中的 category 和 item 等元数据?

{
     "request": {
         "meta": {
            "category": "some category",
            "item": {
                "discovery_item_id": "999"
            }
        },
        , "start_requests": true
    },
    "spider_name": "target.com_products"
}

参考:https ://scrapyrt.readthedocs.io/en/latest/api.html#id1

标签: pythonapiscrapyweb-crawler

解决方案


scrapyRT 中有一个未合并的 PR,它增加了在 POST 请求中传递额外参数的支持。

1)修补位于scrapyrt文件夹中的resources.py文件。在我的情况下是 /usr/local/lib/python3.5/dist-packages/scrapyrt/resources.py

替换为以下代码:https ://github.com/gdelfresno/scrapyrt/commit/ee3be051ea647358a6bb297632d1ea277a6c02f8

2) 现在您的蜘蛛可以使用 self.param1 访问新参数

ScrapyRT 卷曲示例:

curl -XPOST -d '{
"spider_name":"quotes",
"start_requests": true,
"param1":"ok"}' "http://localhost:9080/crawl.json"

在你的蜘蛛

def parse(self, response):
    print(self.param1)

问候


推荐阅读