0
我想湊在此鏈接給定網頁單列相對多行數據 - http://new-york.eat24hours.com/picasso-pizza/19053如何提取scrapy
在這裏,我試圖讓所有喜歡的地址和電話等可能的細節因此,我已經提取了名稱,電話,地址,評論,評分。 但我也想在這裏提取餐廳的完整菜單(價格與物品的名稱)。 所以,我不知道如何管理這些數據到csv的輸出中。
單個網址的其餘數據將是單一的,但菜單中的項目總是數量不同。
這裏下面是我的代碼,因此遠
import scrapy
from urls import start_urls
class eat24Spider(scrapy.Spider):
AUTOTHROTTLE_ENABLED = True
name = 'eat24'
def start_requests(self):
for x in start_urls:
yield scrapy.Request(x, self.parse)
def parse(self, response):
brickset = response
NAME_SELECTOR = 'normalize-space(.//h1[@id="restaurant_name"]/a/text())'
ADDRESS_SELECTION = 'normalize-space(.//span[@itemprop="streetAddress"]/text())'
LOCALITY = 'normalize-space(.//span[@itemprop="addressLocality"]/text())'
REGION = 'normalize-space(.//span[@itemprop="addressRegion"]/text())'
ZIP = 'normalize-space(.//span[@itemprop="postalCode"]/text())'
PHONE_SELECTOR = 'normalize-space(.//span[@itemprop="telephone"]/text())'
RATING = './/meta[@itemprop="ratingValue"]/@content'
NO_OF_REVIEWS = './/meta[@itemprop="reviewCount"]/@content'
OPENING_HOURS = './/div[@class="hours_info"]//nobr/text()'
EMAIL_SELECTOR = './/div[@class="company-info__block"]/div[@class="business-buttons"]/a[span]/@href[substring-after(.,"mailto:")]'
yield {
'name': brickset.xpath(NAME_SELECTOR).extract_first().encode('utf8'),
'pagelink': response.url,
'address' : str(brickset.xpath(ADDRESS_SELECTION).extract_first().encode('utf8')+', '+brickset.xpath(LOCALITY).extract_first().encode('utf8')+', '+brickset.xpath(REGION).extract_first().encode('utf8')+', '+brickset.xpath(ZIP).extract_first().encode('utf8')),
'phone' : str(brickset.xpath(PHONE_SELECTOR).extract_first()),
'reviews' : str(brickset.xpath(NO_OF_REVIEWS).extract_first()),
'rating' : str(brickset.xpath(RATING).extract_first()),
'opening_hours' : str(brickset.xpath(OPENING_HOURS).extract_first())
}
我很抱歉,如果我提出這個混亂,但任何形式的幫助將不勝感激。 提前謝謝!
謝謝你這麼much..i會嘗試並讓你知道它是否工作或不。 –
爲了簡單起見,我在menu_items中編輯了xpath。 – vold
謝謝,真的幫助.. –