无法从scray导入字段对象项目.py金融机构

2024-06-28 11:12:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用以下import语句将字段引入Scrapy蜘蛛:

from test.items import fixture

在这个实例中,test.py是一个Scrapy脚本,它包含在文件夹路径中:

^{pr2}$

文件项目.py在此基础上一级并包含在文件夹路径中:

C:\Python27\mrscrap\mrscrap\items.py

这行代码产生错误:

No module named items

我在逻辑'test.items'中使用了正确的文件名吗?文件items.py在正确的位置吗?在

我的完整代码是:

from scrapy.spider import Spider
from scrapy.http import Request
from mrscrap.items import Fixture
from scrapy.utils.markup import remove_tags
from scrapy.cmdline import execute
import re

class GoalSpider(Spider):
    name = "goal"
    allowed_domains = ["whoscored.com"]
    start_urls = (
        'http://www.whoscored.com/',
        )

    def parse(self, response):
        return Request(
            url="http://www.whoscored.com/Players/3859/Fixtures/Wayne-Rooney",
            callback=self.parse_fixtures
        )

    def parse_fixtures(self,response):
        sel = response.selector
        for tr in sel.css("table#player-fixture>tbody>tr"):
             item = Fixture()
             item['tournament'] = tr.xpath('td[@class="tournament"]/span/a/text()').extract()
             item['date'] = tr.xpath('td[@class="date"]/text()').extract()
             item['team home'] = tr.xpath('td[@class="team home "]/a/text()').extract()
             yield item

execute(['scrapy','crawl','goal'])

以及内部的阶级项目.py是这样写的:

class Fixture(Item):
    tournament = Field()
    date = Field()
    team_home = Field()   

谢谢


Tags: frompytestimportcomhttpparseitems
1条回答
网友
1楼 · 发布于 2024-06-28 11:12:55

一般scray项目的第一个答案,您可以在其中运行scray命令

很难理解test是什么引用,因为您的项目似乎命名为mrscrap。如果您试图从items.py文件导入fixture引用,则该语句应为:

from mrscrap.items import fixture

这需要一个__init__.py文件存在于mrscrap\中,但在使用scrapy创建项目之后,默认情况下它应该在那里。在

直接从其目录运行scraper(如在更新中)

您可以使用相对导入来完成此操作,如PEP 328所示。在

^{pr2}$

这要求您处于当前活动的包中,因此您的spider目录中必须有一个__init__.py文件(尽管是空的)。在

相关问题 更多 >