Please find my code :
# # Parse a new post. #
def parse_new_post(self,response,review,created_at,data):
data.update({
'cool_count':self.set_int(review.css('a[rel=cool]').css('span[class=count]::text').extract()),
'created_at':self.set_date(review.css('meta[itemprop=datePublished]::attr(content)').extract()[0]),
'elite':len(review.css('.is-elite')) == 1,
'funny_count':self.set_int(review.css('a[rel=funny]').css('span[class=count]::text').extract()),
'owner_comment_text':self.set_text(review.css('span[class=js-content-toggleable\ hidden]::text').extract()).replace("\n"," "),
#'rating':review.css('div[itemprop=reviewRating]').css('div').css('i::attr(title)').re('(\\d\.\\d)'),
'rating':review.css('div[itemprop=reviewRating]').css('meta').css('::attr(content)').re('(\\d\.\\d)')[0].encode('utf-8'),
#'review_id':review.css('div::attr(data-review-id)').extract()[0].encode('utf-8'),
#'review_id':review.xpath('.//div[contains(@class,"review review--with-sidebar")]/@data-review-id').extract(),
'review_text':self.set_text(review.css('p[itemprop=description]::text').extract()).replace("\n"," "),
'total_friends':self.set_int(review.css('li[class=friend-count]').css('b::text').extract()),
#'total_friends':int(review.xpath('.//li[contains(@class,"friend-count")]/span/b/text()').extract()[0].strip()),
#'total_reviews':int(review.xpath('.//li[contains(@class,"review-count")]/span/b/text()').extract()[0].strip()),
#'total_friends':int(review.xpath('.//li[contains(@class,"friend-count")]/b/text()').extract()[0].strip()),
#'total_reviews':int(review.xpath('.//li[contains(@class,"review-count")]/b/text()').extract()[0].strip()),
'total_reviews':self.set_int(review.css('li[class=review-count]').css('b::text').extract()),
'user_id':review.css('div[class*=photo-box]').css('a::attr(href)').extract(),
'useful_count':self.set_int(review.css('a[rel=useful]').css('span[class=count]::text').extract()),
#'user_location':review.css('li[class=user-location]').css('b::text').extract()[0].encode('utf-8'),
'user_location':review.xpath('.//li[@class="user-location responsive-hidden-small"]/b/text()').extract(),
'username':review.css('meta[itemprop=author]::attr(content)').extract()[0].encode('utf-8'),
'review_id':review.xpath('.//div[contains(@class,"review review--with-sidebar")]/@data-review-id').extract()[0].encode('utf-8'),
})
When I am crawling the website I am getting error below:
2016-11-22 01:27:52 [scrapy] ERROR: Spider error processing <GET https://www.yelp.com/biz/lexus-of-glendale-glendale?utm_campaign=yelp_api&utm_medium=api_v2_phone_search&utm_source=HPtU-ro8MXX3MOY_DQkP6A?sort_by=date_desc> (referer: None)
Traceback (most recent call last):
File "/usr/lib64/python2.7/site-packages/scrapy/utils/defer.py", line 102, in iter_errback
yield next(it)
File "/usr/lib64/python2.7/site-packages/scrapy/spidermiddlewares/offsite.py", line 28, in process_spider_output
for x in result:
File "/usr/lib64/python2.7/site-packages/scrapy/spidermiddlewares/referer.py", line 22, in <genexpr>
return (_set_referer(r) for r in result or ())
File "/usr/lib64/python2.7/site-packages/scrapy/spidermiddlewares/urllength.py", line 37, in <genexpr>
return (r for r in result or () if _filter(r))
File "/usr/lib64/python2.7/site-packages/scrapy/spidermiddlewares/depth.py", line 54, in <genexpr>
return (r for r in result or () if _filter(r))
File "/c360/apps/c360nextgen/src/crawlers/yelp_new/yelp_new/spiders/lexus_posts.py", line 85, in parse
yield self.check_for_new_post(response,review,created_at,data)
File "/c360/apps/c360nextgen/src/crawlers/yelp_new/yelp_new/spiders/lexus_posts.py", line 95, in check_for_new_post
return self.parse_new_post(response,review,created_at,data)
File "/c360/apps/c360nextgen/src/crawlers/yelp_new/yelp_new/spiders/lexus_posts.py", line 123, in parse_new_post
'review_id':review.xpath('.//div[contains(@class,"review review--with-sidebar")]/@data-review-id').extract()[0].encode('utf-8'),
IndexError: list index out of range