我正在尝试抓取一个活动网站,并且我有附加的代码来抓取活动名称和位置。我将输出写入 csv 文件,但随后 csv 文件将所有事件名称附加在一行中。
例如,假设我有两个事件 Bruno Mars 和 Maroon 5,它们的位置分别为 San Jose、Santa Clara。当前输出为,
事件名称事件位置
Bruno Mars, Maroon 5 San Jose, 圣克拉拉
但我希望看到,
事件名称事件位置
布鲁诺马尔斯圣何塞
栗色 5 圣克拉拉。
有人可以让我知道为什么这种格式对我来说变得很奇怪吗?我在这里附上了代码。然后我用它scrapy crawl event_spider -o output.csv -t csv
来运行我的代码。
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from event_test.items import EventItem
class EventSpider(BaseSpider):
name = "event_spider"
allowed_domains = ["eventful.com"]
start_urls = [
"http://eventful.com/sanjose/events"
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
events = hxs.select("/html/body[@id='events']/div[@id='outer-container']/div[@id='mid-container']/div[@id='inner-container']/div[@id='content']/div[@class='cols-2-1']/div[@class='alpha']/div[@id='top-events']/div[@class='section top-events cage-dbl-border cage-bdr-mdgrey']/div[@id='events-scroll']/div[@id='events-scroll-items']/ul[@id='events-scroll-items-list']/li[@class='top-events-item ']")
items = []
for event in events:
item = EventItem()
item['event_name'] = event.select("//h2/a/span/text()").extract()
item['event_locality'] = event.select("//span[@class='locality']/text()").extract()
items.append(item)
return items