Rev 178 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
'''Created on 16-May-2010@author: gaurav'''from scrapy.spider import BaseSpiderfrom scrapy.selector import HtmlXPathSelectorfrom scrapy.http import Requestfrom demo.items import DemoItemfrom scrapy.contrib.spidermiddleware import refererfrom scrapy.http.headers import Headersfrom scrapy.http.request.form import FormRequestfrom scrapy.log import msgfrom scrapy.http.response import Responsefrom html2text.unescaping import *from datastore.DataAccessor import *from datastore.DataCodeAccessor import *class indiaplaza_spider(BaseSpider):def __init__(self):initialize_table()da = DataHelper()#INDIAPLAZA_DOMAINNAME = "indiaplaza"INDIAPLAZA_DOMAINNAME = get_code_word("INDIAPLAZA_DOMAINNAME")self.domain_name = INDIAPLAZA_DOMAINNAME#INDIAPLAZA_CT = 18#INDIAPLAZA_CT = int(get_code_word("INDIAPLAZA_CT"))#INDIAPLAZA_NO = 1CT = int(da.get_extra_vars('indiaplaza_count'))NO = 1if CT>18:NO = CT#INDIAPLAZA_URL = "http://www.indiaplaza.in/mobile-phones-Mobiles-1.htm?PageNo="INDIAPLAZA_URL = get_code_word("INDIAPLAZA_URL")while(NO<=CT):url1 = INDIAPLAZA_URL + str(NO)self.start_urls.append(url1)NO=NO+1def start_requests(self):#adding entry for the supplier i.e its name and site#INDIAPLAZA_HOMEPAGE = "www.indiaplaza.com"INDIAPLAZA_HOMEPAGE = get_code_word("INDIAPLAZA_HOMEPAGE")da = DataHelper()da.add_supplier(self.domain_name, INDIAPLAZA_HOMEPAGE)listreq = []#for each request a referer has to be set#INDIAPLAZA_REFERER = "www.google.com/search"INDIAPLAZA_REFERER = get_code_word("INDIAPLAZA_REFERER")for url1 in self.start_urls:request = Request(url = str(url1), callback=self.parse, dont_filter=True)request.headers.setdefault("Referer", INDIAPLAZA_REFERER)listreq.append(request)return listreqdef parse(self, response):da = DataHelper()#INDIAPLAZA_URL1 = "http://www.indiaplaza.in"INDIAPLAZA_URL1 = get_code_word("INDIAPLAZA_URL1")hxs = HtmlXPathSelector(response)#INDIAPLAZA_XPATH1 = '//tr/td/table[@id="browsesku"]'INDIAPLAZA_XPATH1 = get_code_word("INDIAPLAZA_XPATH1")phone_info = hxs.select(INDIAPLAZA_XPATH1)items = []#INDIAPLAZA_XPATH2 = './/div[@class="skuimg"]/a/@title'INDIAPLAZA_XPATH2 = get_code_word("INDIAPLAZA_XPATH2")#INDIAPLAZA_XPATH3 = './/div[@class="skuimg"]/a/@href'INDIAPLAZA_XPATH3 = get_code_word("INDIAPLAZA_XPATH3")if not phone_info:ct = int(da.get_extra_vars('indiaplaza_count'))if ct>18:fails = int(da.get_extra_vars('indiaplaza_fails'))fails = fails+1da.set_extra_vars('indiaplaza_fails',str(fails),'')if fails > 0:da.set_extra_vars('indiaplaza_flag','FALSE','')da.set_extra_vars('indiaplaza_fails',str(fails),'')else:for i in phone_info:item = {}item['title'] = i.select(INDIAPLAZA_XPATH2)[0].extract()item['url'] = i.select(INDIAPLAZA_XPATH3)[0].extract()items.append(item)for item in items:str2 = INDIAPLAZA_URL1 + str(item['url'])da.add_ipbasic(item['title'],unescape(str2))SPIDER = indiaplaza_spider()