Rev 181 | Rev 259 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
'''Created on 13-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 datastore.DataAccessor import *from datastore.DataCodeAccessor import *from html2text.unescaping import *from elixir import *class infi_spider(BaseSpider):def __init__(self):initialize_table()da = DataHelper()#da.initxy()#INFIBEAM_DOMAINNAME = "infibeam"INFIBEAM_DOMAINNAME = get_code_word("INFIBEAM_DOMAINNAME")print INFIBEAM_DOMAINNAMEself.domain_name = INFIBEAM_DOMAINNAME#INFIBEAM_CT = 15#INFIBEAM_CT = int(get_code_word("INFIBEAM_CT"))#ct = 15ct = int(da.get_extra_vars('infibeam_count'))#INFIBEAM_NO = 1no = 1if ct>14:no = ct#INFIBEAM_URL = "http://www.infibeam.com/Mobiles/search?page="INFIBEAM_URL = get_code_word("INFIBEAM_URL")while(no<=ct):url1 = INFIBEAM_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#INFIBEAM_HOMEPAGE = "www.infibeam.com"INFIBEAM_HOMEPAGE = get_code_word("INFIBEAM_HOMEPAGE")da = DataHelper()da.add_supplier(self.domain_name, INFIBEAM_HOMEPAGE)listreq = []#for each request a referer has to be set#INFIBEAM_REFERER = "www.google.com/search"INFIBEAM_REFERER = get_code_word("INFIBEAM_REFERER")for url1 in self.start_urls:request = Request(url = str(url1), callback=self.parse, dont_filter=True)request.headers.setdefault("Referer", INFIBEAM_REFERER)listreq.append(request)return listreqdef parse(self, response):da = DataHelper()msg(response.url)#INFIBEAM_VATPLUSTAX = 0INFIBEAM_VATPLUSTAX = int(get_code_word("INFIBEAM_VATPLUSTAX"))#list elements are separated by ';'#INFIBEAM_REMOVELIST = ["Rs.",",","-","/","Rs"]INFIBEAM_REMOVELIST = get_code_word("INFIBEAM_REMOVELIST")INFIBEAM_REMOVELIST = INFIBEAM_REMOVELIST.split(';')hxs = HtmlXPathSelector(response)#INFIBEAM_XPATH1 = '//ul[@class="srch_result portrait"]/li'INFIBEAM_XPATH1 = get_code_word("INFIBEAM_XPATH1")phone_info = hxs.select(INFIBEAM_XPATH1)#INFIBEAM_XPATH2 = './/p/span[@class="title"]/text()'INFIBEAM_XPATH2 = get_code_word("INFIBEAM_XPATH2")#INFIBEAM_XPATH3 = './/p/span[@class="price"]/text()'INFIBEAM_XPATH3 = get_code_word("INFIBEAM_XPATH3")items = []msg(response.url)if not phone_info:ct = int(da.get_extra_vars('infibeam_count'))if ct>14:fails = int(da.get_extra_vars('infibeam_fails'))fails = fails+1if fails > 0:da.set_extra_vars('infibeam_flag','FALSE','')da.set_extra_vars('infibeam_fails',str(fails),'')else:for i in phone_info:item = {}item['name'] = i.select(INFIBEAM_XPATH2)[0].extract()item['price'] = i.select(INFIBEAM_XPATH3)[0].extract()items.append(item)for i in items:amnt = i['price']if amnt != '':for r in INFIBEAM_REMOVELIST:while amnt.find(r) != -1:amnt = amnt.replace(r, "")amnt = amnt.strip()pr = int(amnt) + INFIBEAM_VATPLUSTAXda.add_infiphone(i['name'], amnt,pr)SPIDER = infi_spider()