文档章节

pyspider爬虫学习-文档翻译-Working-with-Results.md

sijinge
 sijinge
发布于 2017/09/06 15:42
字数 668
阅读 95
收藏 0

精选30+云产品,助力企业轻松上云!>>>

Working with Results 结果处理
====================
#从WebUI下载和查看您的数据很方便,但可能不适合计算机。
Downloading and viewing your data from WebUI is convenient, but may not suitable for computer.

Working with ResultDB 结果数据处理
---------------------
#虽然resultdb只是为结果预览而设计,不适合大规模存储。但是,如果您想从resultdb获取数据,那么有一些简单的代码片段使用数据库API来帮助您连接和查询数据。
Although resultdb is only designed for result preview, not suitable for large scale storage. But if you want to grab data from resultdb, there are some simple snippets using database API that can help you to connect and select the data.

```
from pyspider.database import connect_database
resultdb = connect_database("<your resutldb connection url>")
for project in resultdb.projects:
    for result in resultdb.select(project):
        assert result['taskid']
        assert result['url']
        assert result['result']
```
#结果['result']是由脚本提交的“return”语句返回的对象。
The `result['result']` is the object submitted by `return` statement from your script.

Working with ResultWorker 使用 ResultWorker
-------------------------
#在生产环境中,您可能希望将pyspider连接到系统/后端处理管道,而不是将其存储到resultdb中。强烈建议重写ResultWorker
In product environment, you may want to connect pyspider to your system / post-processing pipeline, rather than store it into resultdb. It's highly recommended to override ResultWorker.

```
from pyspider.result import ResultWorker

class MyResultWorker(ResultWorker):
    def on_result(self, task, result):
        assert task['taskid']
        assert task['project']
        assert task['url']
        assert result
        # your processing code goes here
```
#结果['result']是由脚本提交的“return”语句返回的对象。
`result` is the object submitted by `return` statement from your script.
#你可以将写好的就脚本放在你的pyspider启动文件夹下,并使用'result_worker'子命令添加参数:
You can put this script (e.g., `my_result_worker.py`) at the folder where you launch pyspider. Add argument for `result_worker` subcommand:
`pyspider result_worker --result-cls=my_result_worker.MyResultWorker`
或者
Or

```
{
  ...
  "result_worker": {
    "result_cls": "my_result_worker.MyResultWorker"
  }
  ...
}
```
#如果你想使用配置文件【请参考部署文档】
if you are using config file. [Please refer to Deployment](/Deployment)
#设计自己的数据库模式
Design Your Own Database Schema
-------------------------------
#的结果被编码为兼容的JSON存储在数据库中。强烈建议设计自己的数据库,并覆写ResultWorker描述的结果。
The results stored in database is encoded as JSON for compatibility. It's highly recommended to design your own database, and override the ResultWorker described above.

TIPS about Results #关于结果的建议
-------------------
#### Want to return more than one result in callback?#想要在回调中返回多个单一结果吗?
#由于taskid(url)的resultdb不重复结果,新的结果将覆盖之前的结果。
As resultdb de-duplicate results by taskid(url), the latest will overwrite previous results.
#一个解决方案是使用“send_message”API为每个结果制作一个“假”的taskid。
One workaround is using `send_message` API to make a `fake` taskid for each result.

```
def detail_page(self, response):
    for li in response.doc('li').items():
        self.send_message(self.project_name, {
            ...
        }, url=response.url+"#"+li('a.product-sku').text())

def on_message(self, project, msg):
    return msg
```

See Also: [apis/self.send_message](/apis/self.send_message)
sijinge
粉丝 0
博文 48
码字总数 48130
作品 0
广州
架构师
私信 提问
加载中
请先登录后再评论。
PySpider 使用过程中的问题记录

问题记录 PyCurl的问题 安装时出现: 这个问题是系统的libcurl编译方式引起的,更改环境变量为即可。 解决方法来自这里 解决方式: wsgidav的问题 运行时出现 此问题是因为wsgidav最新版为3...

Shaneee
2019/10/10
85
0
搭建pyspider爬虫服务

环境准备 首先yum更新 yum update -y   安装开发编译工具 yum install gcc gcc-c++ -y   安装依赖库 yum install python-pip python-devel python-distribute libxml2 libxml2-devel py......

osc_7v8xw84w
2018/03/20
2
0
使用pyspider抓取起点中文网小说数据

简介 pyspider是国人开发的相当好用的爬虫框架。虽然网上教程不是很多,但是文档详细,操作简单,非常适合用来做爬虫练习或者实现一些抓取数据的需求。 本文就以抓取起点中文小说网的小说作品...

某杰
2017/02/22
0
0
【爬虫】进阶修习系列 · 一

本文会涉及以下内容:【不定时修改中。。。】 1. pyspider的介绍; 2. 爬虫架构的典型设计; 3. 垂直搜索引擎的初探。 PySpider 之前的爬虫策略很简单,用得python2.7:urllib2 + Beautiful...

jxfactor
2015/10/22
0
0
pyspider兼容python3.7解决方案

最近再学习python3爬虫,遇到了pyspider不兼容python3.7的问题,记录一下我解决的步骤: 1.找到pyspider安装目录Libsite-packagespyspider e.g:C:Users用户AppDataLocalProgramsPythonPytho...

码叔
03/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MetadataException:无法加载指定的元数据资源 - MetadataException: Unable to load the specified metadata resource

问题: All of a sudden I keep getting a MetadataException on instantiating my generated ObjectContext class. 突然间,我在实例化生成的ObjectContext类时不断收到MetadataException 。......

fyin1314
38分钟前
8
0
如何使用Java获取当前日期/时间 - How to get the current date/time in Java

问题: 用Java获取当前日期/时间的最佳方法是什么? 解决方案: 参考一: https://stackoom.com/question/LiRU/如何使用Java获取当前日期-时间 参考二: https://oldbug.net/q/LiRU/How-to-g...

富含淀粉
今天
14
0
SUSE收购Rancher Labs:押注云原生市场

导读:Gartner预测,到2024年,成熟的经济体中采用云原生应用程序和基础架构将使容器管理的使用率超过75%的大型企业,而2020年还不到35%。 7月8日,全球最大的独立开源公司SUSE获得收购Ran...

开源村OSV
今天
19
0
一文看尽飞桨PaddlePaddle最新升级:5大优势,更低门槛使用深度学习

本文作者:杨蕊1002 飞桨(PaddlePaddle)是国内唯一功能完备的端到端开源深度学习平台,集深度学习训练和预测框架、模型库、工具组件、服务平台为一体,其兼具灵活和效率的开发机制、工业级...

百度开发者中心
2019/07/17
16
0
Emacs和Vim之间的差异 - Differences between Emacs and Vim

问题: Without getting into a religious argument about why one is better than the other, what are the practical differences between Emacs and Vim? 在没有就为什么一个比另一个更好......

法国红酒甜
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部