我已經遇到了一個問題,我已經把一個蜘蛛放在一起。我試圖從this site的抄本中找出各行文字以及相應的時間戳,並找到了我認爲合適的選擇器,但運行時,蜘蛛的輸出只是最後一行和時間戳。我見過一些其他類似問題的人,但還沒有找到解決我的問題的答案。Scrapy Spider返回最後一個元素時,給出一個選擇器列表
這裏是蜘蛛:
# -*- coding: utf-8 -*-
import scrapy
from this_american_life.items import TalTranscriptItem
class CrawlSpider(scrapy.Spider):
name = "transcript2"
allowed_domains = ["https://www.thisamericanlife.org/radio-archives/episode/1/transcript"]
start_urls = (
'https://www.thisamericanlife.org/radio-archives/episode/1/transcript',
)
def parse(self, response):
item = TalTranscriptItem()
for line in response.xpath('//p'):
item['begin_timestamp'] = line.xpath('//@begin').extract()
item['line_text'] = line.xpath('//text()').extract()
yield item
這裏是在items.py
爲TalTranscriptItem()
代碼:
# -*- coding: utf-8 -*-
# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html
import scrapy
class TalTranscriptItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
episode_id = scrapy.Field()
episode_num_text = scrapy.Field()
year = scrapy.Field()
radio_date_text = scrapy.Field()
radio_date_datetime = scrapy.Field()
episode_title = scrapy.Field()
episode_hosts = scrapy.Field()
act_id = scrapy.Field()
line_id = scrapy.Field()
begin_timestamp = scrapy.Field()
speaker_class = scrapy.Field()
speaker_name = scrapy.Field()
line_text = scrapy.Field()
full_audio_link = scrapy.Field()
transcript_url = scrapy.Field()
當scrapy shell
運行,它似乎正常工作(繪製所有線路的文字),但由於某種原因,我還沒有能夠得到它在蜘蛛的工作。
我很高興澄清任何這些問題,並將不勝感激任何人都可以提供的幫助!
'TalTranscriptItem'是什麼類型? – Hackerman
@Hackerman我會將TalTranscriptItem的代碼添加到問題中。它是scrapy項目目錄中items.py文件的一個類。 –
如果我沒有記錯,'scrapy.Field()'是一個普通的舊python字典,而不是一個列表 – Hackerman