我找不到任何问题的答案,所以我希望可以在这里提问。
我正在尝试取消电影节目,但仍然出现以下错误。
真正让我困惑的是,问题显然在于管道。然而,我有第二个歌剧院蜘蛛,代码完全相同(只是位置不同),它工作得很好。“Shows”和“Place”指的是我的Django模型。我已将它们的字段更改为CharFields,因此日期/时间格式不存在问题。
我还尝试使用专用的刮擦项目“KikaItem”而不是“ShowItem”(与我的opera spider共享),但错误仍然存在。
class ScrapyKika(object):
def process_item(self, ShowItem, spider):
place, created = Place.objects.get_or_create(name="kino kika")
show = Shows.objects.update_or_create(
time=ShowItem["time"],
date=ShowItem["date"],
place=place,
defaults={'title': ShowItem["title"]}
)
return ShowItem
这是我的蜘蛛代码。我想问题就在这里,因为我在这里使用了与歌剧不同的方法。然而,我不确定会出什么问题。
import scrapy
from ..items import ShowItem, KikaItemLoader
class KikaSpider(scrapy.Spider):
name = "kika"
allowed_domains = ["http://www.kinokika.pl/dk.php"]
start_urls = [
"http://www.kinokika.pl/dk.php"
]
def parse(self, response):
divs = response.xpath('//b')
for div in divs:
l = KikaItemLoader(item=ShowItem(), response=response)
l.add_xpath("title", "./text()")
l.add_xpath("date", "./ancestor::ul[1]/preceding-sibling::h2[1]/text()")
l.add_xpath("time", "./preceding-sibling::small[1]/text()")
return l.load_item()
项目加载器
class KikaItemLoader(ItemLoader):
title_in = MapCompose(strip_string,lowercase)
title_out = Join()
time_in = MapCompose(strip_string)
time_out = Join()
date_in = MapCompose(strip_string)
date_out = Join()
感谢您抽出时间,并对所有拼写错误表示抱歉:)