首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >刮伤:自动提取的田块

刮伤:自动提取的田块
EN

Stack Overflow用户
提问于 2016-04-26 22:30:58
回答 1查看 113关注 0票数 0

在展开之前,将我的查询总结为几个要点:

  • 目标网站是一个体育网站与100+领域,我想刮。
  • 我想声明一个空类来填充字段名,并用相关的值填充它。
  • 我不清楚您是如何更改项目文件的,在这种情况下,您没有显式地声明您所刮过的项。

现在开始讲黄铜钉。

我想从橄榄球数据库上刮点东西。代码片段如下:

代码语言:javascript
复制
<TeamData Possession="0.50" Score="40" Side="Home" TeamRef="t1550" Territory="0">
  <Stat Type="restart_opp_player">0</Stat>
  <Stat Type="kick_oppn_collection">0</Stat>
  <Stat Type="kicks_from_hand">0</Stat>
  <Stat Type="penalty_conceded_killing_ruck">0</Stat>
  ...

这段代码继续了大约140行代码,这样就可以显式地定义每个属性了。

与其逐个提取每个属性,我希望能够定义一个空类,然后用各种属性填充它。这在shell中非常容易实现。

代码语言:javascript
复制
class RugbyItem(params):
 def __init__(self, params)
  selc.__dict__.update(params)

home_attribute_names = response.xpath('//TeamData[@Side="Home"]/Stat/@Type').extract()
home_attribute_stats = response.xpath('//TeamData[@Side="Home"]/Stat/text()').extract()
concat = {k: v for (k, v) in (zip(home_names, home_stats))}

home_data = RugbyItem(concat)

基于以上所述,有人能帮我弄清楚我应该如何构造项目文件吗?

代码语言:javascript
复制
class RugbyItem(scrapy.Item):
 ??? = scrapy.Field()

还有蜘蛛侠班。

代码语言:javascript
复制
class MySpider(BaseSpider):
 name        = "rugbyspider"
 allowed_domains = ["opta.net"]
 start_urls  = ["http://omo.akamai.opta.net/?feed_type=ruf9&game_id=113013&user=OWV3&psw=trDd59TW"]

 def parse(self, response):
  home_attribute_names = response.xpath('//TeamData[@Side="Home"]/Stat/@Type').extract()
  home_attribute_stats = response.xpath('//TeamData[@Side="Home"]/Stat/text()').extract()
  concat = {k: v for (k, v) in (zip(home_names, home_stats))}
  home_data = RugbyItem(concat)
  yield home_data

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-26 22:32:36

您不必生成一个scrapy.Item实例,也可以生成一个dict,它不会受限于所需的限制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36876960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档