我尝试使用以下import语句将字段引入Scrapy
蜘蛛:
from test.items import fixture
在这个实例中,test.py
是一个Scrapy
脚本,它包含在文件夹路径中:
文件项目.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()
谢谢
一般scray项目的第一个答案,您可以在其中运行scray命令
很难理解
test
是什么引用,因为您的项目似乎命名为mrscrap
。如果您试图从items.py
文件导入fixture
引用,则该语句应为:这需要一个
__init__.py
文件存在于mrscrap\
中,但在使用scrapy创建项目之后,默认情况下它应该在那里。在直接从其目录运行scraper(如在更新中)
您可以使用相对导入来完成此操作,如PEP 328所示。在
^{pr2}$这要求您处于当前活动的包中,因此您的spider目录中必须有一个
__init__.py
文件(尽管是空的)。在相关问题 更多 >
编程相关推荐