Subversion Repositories SmartDukaan

Rev

Rev 237 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
191 ashish 1
'''
2
Created on 28-May-2010
3
 
4
@author: gaurav
5
'''
6
 
7
from scrapy.spider import BaseSpider
8
from scrapy.selector import HtmlXPathSelector
9
from scrapy.http import Request
10
 
11
from demo.items import DemoItem
12
from scrapy.contrib.spidermiddleware import referer
13
from scrapy.http.headers import Headers
14
from scrapy.http.request.form import FormRequest
15
from scrapy.log import msg
16
from scrapy.http.response import Response
17
from time import *
18
 
19
from datastore import DataAccessor
20
from datastore.DataAccessor import DataHelper
21
import urllib
22
 
23
class naaptol_price2(BaseSpider):
24
 
25
    def __init__(self):
26
       self.domain_name = "naaptolphones2"
27
       #self.start_urls.append("http://www.naaptol.com/price/10415-Fly-Hummer-HT1.html")
28
 
29
       da = DataHelper()
30
       for pitem in da.get_allmorenaaptolurls():
31
            self.start_urls.append(pitem.url.strip())
32
 
33
    def start_requests(self):
34
        listreq = []
35
        for url1 in self.start_urls:
36
            request = Request(url = url1, callback=self.parse)
37
            request.headers.setdefault("Referer", "www.naaptol.com")
38
            listreq.append(request)
39
        return listreq
40
 
41
    def parse(self, response): 
42
        f = open('/home/gaurav/Desktop/response.txt', 'w')
43
        f.write(response.body)
44
        print "  url  " + response.url
45
        name = str(response.url)
46
        name_pos = name.rfind("/")
47
        name = name[name_pos+1:len(name)-5]
48
        hxs = HtmlXPathSelector(response)
49
        da = DataHelper()
50
       #prices = hxs.select('//table[@class ="ProductDetails"]/tbody/tr[6]/td/span/text()')
51
        prices = hxs.select('//table[@class ="ProductDetails"]//td[@class="Price"]/span/text()')
52
        try:
53
            price1 = prices.extract()[0]
54
            price1 = price1.decode("utf-8")
55
            price1 = price1.strip()
56
        except:
57
            price1 = ""
58
 
59
        try:
60
            price2 = prices.extract()[1]
61
            price2 = price2.decode("utf-8")
62
            price2 = price2.strip()
63
        except:
64
            price2 = ""
65
 
66
        try:
67
            if price1 == "" and price2 == "":
68
                prices = hxs.select('//table[@class ="ProductDetails"]//td[@class="Price"]/span/script/text()')
69
                price = str(prices.extract()[0])
70
                pos1 = price.find("'")
71
                pos2 = price.find("'",pos1+1,len(price))
72
                price1 = price[pos1+1:pos2] + "(approx)" 
73
                price2 = ""
74
        except:
75
            price1 = price2 = ""
76
 
77
        if price1 != '':
78
            price1 = price1.replace("Rs.", "")
79
            price1 = price1.replace(",", "")
80
            price1 = price1.strip()
81
        if price2 != '':        
82
            price2 = price2.replace("Rs.", "")
83
            price2 = price2.replace(",", "")
84
            price2 = price2.strip()
85
 
86
        if price1 == "Rates Not Available":
87
            price1 = price2 = ""
88
 
89
        print name
90
        print price1
91
        print price2
92
        print "\n"
93
        range = price1
94
        if price2 != "":
95
            range = str(range) + " to " 
96
            range = range + str(price2) 
97
            da.add_new_naaptolphone(name, range)
98
 
99
 
100
        OnlineSellers_pricelist = []
101
        OnlineSellers_namelist = []
102
        try:
103
            ct1 = hxs.select('//div[@id="OnlineSellers"]//div[@class="ProductResultHead"]//div[@class="headingstyle"]/text()')
104
            ct1 = str(ct1.extract()[0])
105
            ct1 = ct1.decode("utf-8")
106
            ct1 = ct1.strip()
107
            ps1 = ct1.find(" ")
108
            ct1 = ct1[0:ps1]
109
            ct1 = int(ct1)
110
        except:
111
            ct1 = 0
112
        ct = ct1
113
        i = 0
114
        os_info = hxs.select('//div[@id="onSellerContents"]//td[@class="price"]')
115
        #print len(os_info)
116
        while ct > 0:
117
            os = os_info[i].extract()
118
            ps1 = os.find(">")
119
            ps2 = os.find("<",ps1)
120
            os = os[ps1+1:ps2]
121
            os = os.replace("Rs.", "")
122
            os = os.replace(",", "")
123
            os = urllib.unquote(os)
124
            try:
125
                os = int(os)
126
            except:
127
                os = os_info[i].extract()
128
                ps1 = os.find(">",ps2)
129
                ps2 = os.find("<",ps1)
130
                os = os[ps1+1:ps2]
131
                os = os.replace("Rs.", "")
132
                os = os.replace(",", "")
133
                os = urllib.unquote(os)
134
                os = int(os) 
135
            print os
136
            OnlineSellers_pricelist.append(os)
137
 
138
            path = '//div[@id="onSellerContents"]//tr[@class="DottedBorder"]/td/a[@id="storeInfoPop'
139
            path = path + str(i) 
140
            path = path + '"]/span/text()'
141
            osname = hxs.select(path)
142
            #print len(osname)
143
            osname = osname.extract()[0]
144
            osname = urllib.unquote(osname)
145
            OnlineSellers_namelist.append(osname)
146
            print osname
147
            i = i+1
148
            ct = ct-1
149
 
150
        l = len(OnlineSellers_pricelist)
151
        i = 0
152
 
153
        nid = da.get_naaptolphone(name,range).id
154
        while l > 0:
155
            da.add_new_ntonlinesp(nid, OnlineSellers_namelist[i], OnlineSellers_pricelist[i])
156
            i = i+1
157
            l = l-1
158
 
159
        LocalSellers_pricelist = []   
160
        LocalSellers_namelist = []
161
        try:
162
            ct1 = hxs.select('//div[@id="LocalStores"]//div[@class="ProductResultHead"]//div[@class="headingstyle"]/text()')
163
            ct1 = str(ct1.extract()[0])
164
            ct1 = ct1.decode("utf-8")
165
            ct1 = ct1.strip()
166
            ps1 = ct1.find(" ")
167
            ct1 = ct1[0:ps1]
168
            ct1 = int(ct1)
169
        except:
170
            ct1 = 0
171
        ct = ct1
172
        i = 0
173
        os_info = hxs.select('//div[@id="offSellerContents"]//td[@class="price"]')
174
        os_names = hxs.select('//div[@id="offSellerContents"]//span[@class="LocalStoreHeading"]/text()')
175
        #print len(os_info)
176
        while ct > 0:
177
            os = os_info[i].extract()
178
            osname = os_names[i].extract() 
179
            #os = os.encode("utf-8")
180
            ps1 = os.find(">")
181
            ps2 = os.find("<",ps1)
182
            os = os[ps1+1:ps2]
183
            os = os.replace("Rs.", "")
184
            os = os.replace(",", "")
185
            os = urllib.unquote(os)
186
            osname = urllib.unquote(osname)
187
            try:
188
                os = int(os)
189
            except:
190
                os = os_info[i].extract()
191
                ps1 = os.find(">",ps2)
192
                ps2 = os.find("<",ps1)
193
                os = os[ps1+1:ps2]
194
                os = os.replace("Rs.", "")
195
                os = os.replace(",", "")
196
                os = urllib.unquote(os)
197
                os = int(os)        
198
            print os
199
            print osname
200
            LocalSellers_pricelist.append(os)
201
            LocalSellers_namelist.append(osname)
202
            i = i+1
203
            ct = ct-1
204
 
205
        l = len(LocalSellers_pricelist)
206
        i = 0
207
 
208
        nid = da.get_naaptolphone(name,range).id
209
        while l > 0:
210
            da.add_new_ntofflinesp(nid, LocalSellers_namelist[i], LocalSellers_pricelist[i])
211
            i = i+1
212
            l = l-1   
213
        '''
214
        l = len(OnlineSellers_list)
215
        i = 0
216
        while l > 0:
217
            #print OnlineSellers_list[i]
218
            i = i+1
219
            l = l-1 
220
        '''    
221
 
222
        f.close()
223
 
224
    '''    
225
        site = response.url
226
        vatplustax = 0
227
        pos1 = pos2 = 0
228
        temp = ""
229
        pos1 = site.rfind('/')
230
        if pos1 != -1:
231
            temp = site[pos1+1:len(site)]
232
            #pos2 = site.rfind('/',0,pos1-1)
233
        #if pos2 > 0:
234
            #temp = site[pos2+1:len(site)]
235
        pos3 = temp.find('.')
236
        temp1 = temp[pos3:len(temp)]
237
        name = temp.replace(temp1,"")         
238
        hxs = HtmlXPathSelector(response)
239
        prices = hxs.select('//div[@id ="priceComp"]//tr[2]/td[3]/span/text()')
240
 
241
        da = DataHelper()
242
        for price in prices:
243
             name = str(name).strip()
244
             price = price.extract()
245
             price = str(price).strip()
246
             price = price.replace("Rs", "")
247
             price = price.replace("/", "")
248
             price = price.replace("-", "")
249
             price = price.replace(".", "")
250
             shown_pr = int(price)
251
             final_pr = shown_pr + vatplustax
252
             da.add_new_mobstorephone(name,shown_pr,final_pr)
253
             print name
254
             print final_pr
255
             print "\n"
256
 
257
        for i in items:
258
            str1 = str(i['title']).strip() 
259
            print str1
260
            amnt = i['price'].replace(",","")
261
            amnt = amnt.replace("Rs", "")
262
            amnt = amnt.replace("/", "")
263
            amnt = amnt.replace("-", "")
264
            amnt = amnt.strip()
265
            vatplustax = 4*int(amnt)/100
266
            pr = int(amnt) + vatplustax 
267
            #print pr
268
            da.add_new_univerphone(str1,amnt,pr)
269
        '''        
270
SPIDER = naaptol_price2()
271