イベントの Web サイトをスクレイピングしようとしていますが、イベントの名前と場所をスクレイピングするためのコードが添付されています。出力を csv ファイルに書き込みますが、csv ファイルにはすべてのイベント名が 1 行に追加されています。
たとえば、Bruno Mars と Maroon 5 という 2 つのイベントがあり、その場所が San Jose、Santa Clara であるとします。現在の出力は、
event_name event_location
ブルーノ・マーズ、マルーン 5 サンノゼ、サンタクララ
見たかったけど、
event_name event_location
ブルーノ・マーズ サンノゼ
マルーン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