Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
233 ashish 1
'''
2
Created on 09-Jun-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 datastore.DataAccessor import *
18
from datastore.DataCodeAccessor import *
19
 
20
from html2text.unescaping import *
21
import urllib
22
 
23
class mobilestore_spider0(BaseSpider):
24
 
25
    def __init__(self):
26
       initialize_table()  
27
       #MOBILESTORE_DOMAINNAME0 = "mobilestore0"   
28
       MOBILESTORE_DOMAINNAME0 = get_code_word("MOBILESTORE_DOMAINNAME0")
29
       self.domain_name = MOBILESTORE_DOMAINNAME0
30
       da = DataHelper()
31
       MOBILESTORE_CT = int(da.get_extra_vars('mobilestore_count'))
32
       nt = 1
33
       if MOBILESTORE_CT > 800:
34
           nt = MOBILESTORE_CT-50
35
       while nt < MOBILESTORE_CT:
36
           #MOBILESTORE_URL2 = "http://www.themobilestore.in/mobilestore/faces/tiles/product.jsp?productID=600&catalogueID=3"
37
           #MOBILESTORE_URL1 = "http://www.themobilestore.in/mobilestore/faces/tiles/product.jsp?productID=" + str(nt)
38
           MOBILESTORE_URL1 = get_code_word("MOBILESTORE_URL1") + str(nt)
39
           #MOBILESTORE_URL2 = MOBILESTORE_URL1 + "&catalogueID=3"
40
           MOBILESTORE_URL2 = MOBILESTORE_URL1 + get_code_word("MOBILESTORE_URL2")
41
           self.start_urls.append(MOBILESTORE_URL2)
42
           nt = nt+1
43
 
44
    def start_requests(self):
45
         #adding entry for the supplier i.e its name and site
46
        #MOBILESTORE_HOMEPAGE = "www.themobilestore.in"
47
        MOBILESTORE_HOMEPAGE = get_code_word("MOBILESTORE_HOMEPAGE")
48
        da = DataHelper()
49
        da.add_supplier(self.domain_name, MOBILESTORE_HOMEPAGE)
50
        listreq = []
51
        #for each request a referer has to be set
52
        #MOBILESTORE_REFERER = "www.google.com/search"
53
        MOBILESTORE_REFERER = get_code_word("MOBILESTORE_REFERER")
54
        for url1 in self.start_urls:
55
            request = Request(url = str(url1), callback=self.parse)
56
            request.headers.setdefault("Referer", MOBILESTORE_REFERER)
57
            listreq.append(request)
58
        return listreq
59
 
60
    def parse(self, response):
61
        da = DataHelper()
62
        #file_to_write1 = "/tmp/phones.csv"
63
        #data_file1 = open(file_to_write1,"a")
64
        url1 = response.url
65
        ps1 = url1.find('=')
66
        ps2 = url1.find('&')
67
        str1 = url1[ps1+1:ps2]
68
        #da = DataHelper()
69
        hxs = HtmlXPathSelector(response)
70
        #MOBILESTORE_XPATH3 = '//span[@id="productLayoutForm:categoryNavigation:navigationList_2:navigationList3"]/text()'
71
        MOBILESTORE_XPATH3 = get_code_word("MOBILESTORE_XPATH3")
72
        #MOBILESTORE_XPATH4 = '//div[@id="priceComp"]//tr[2]/td[3]/span/text()'
73
        MOBILESTORE_XPATH4 = get_code_word("MOBILESTORE_XPATH4")
74
        #MOBILESTORE_XPATH5 = '//span[@id="productLayoutForm:categoryNavigation:navigationList_1:navigationList3"]/text()'
75
        MOBILESTORE_XPATH5 = get_code_word("MOBILESTORE_XPATH5")
76
        #MOBILESTORE_XPATH6 = '//span[@id="productLayoutForm:categoryNavigation:navigationList_0:navigationList3"]/text()'
77
        MOBILESTORE_XPATH6 = get_code_word("MOBILESTORE_XPATH6")
78
        #MOBILESTORE_XPATH7 = '//div[@id="priceComp"]/b/text()'
79
        MOBILESTORE_XPATH7 = get_code_word("MOBILESTORE_XPATH7")
80
        #MOBILESTORE_XPATH8 = '//span[@id="productLayoutForm:categoryNavigation:navigationList_0:navigationList1"]/text()'
81
        MOBILESTORE_XPATH8 = get_code_word("MOBILESTORE_XPATH8")
82
        try:
83
            catg = hxs.select(MOBILESTORE_XPATH8)
84
            catg = catg[0].extract()
85
            catg = catg.strip()
86
            catg = unescape(catg)
87
            print catg
88
            if catg == "Mobile Phones>":
89
                try:
90
                    str2 = hxs.select(MOBILESTORE_XPATH7)
91
                    str2 = str2[0].extract()
92
                    str2 = "can buy"
93
                except:
94
                    str2 = "can not buy"    
95
                try:
96
                    name = hxs.select(MOBILESTORE_XPATH3)
97
                    name = name[0].extract()
98
                    name = name.strip()
99
                    price = hxs.select(MOBILESTORE_XPATH4)
100
                    price = price[0].extract()
101
                    price = price.strip()
102
                    price = int(price)
103
                    da.add_new_mobstorephone_new(name, price, price, str2)
104
                    #csv_data1 =  "%s, %s, %s, %s" %(name, price, str1, str2)
105
                    #data_file1.write(csv_data1)
106
                    #data_file1.write("\n")
107
                    print name
108
                    print price   
109
                except:
110
                    try:
111
                        name = hxs.select(MOBILESTORE_XPATH5)
112
                        name = name[0].extract()
113
                        name = name.strip()
114
                        price = hxs.select(MOBILESTORE_XPATH4)
115
                        price = price[0].extract()
116
                        price = price.strip()
117
                        price = int(price)
118
                        da.add_new_mobstorephone_new(name, price, price, str2)
119
                        #csv_data1 =  "%s, %s, %s, %s" %(name, price, str1, str2)
120
                        #data_file1.write(csv_data1)
121
                        #data_file1.write("\n")
122
                        print name
123
                        print price   
124
                    except:
125
                        try:
126
                            name = hxs.select(MOBILESTORE_XPATH6)
127
                            name = name[0].extract()
128
                            name = name.strip()
129
                            price = hxs.select(MOBILESTORE_XPATH4)
130
                            price = price[0].extract()
131
                            price = price.strip()
132
                            price = int(price)
133
                            da.add_new_mobstorephone_new(name, price, price, str2)
134
                            #csv_data1 =  "%s, %s, %s, %s" %(name, price, str1, str2)
135
                            #data_file1.write(csv_data1)
136
                            #data_file1.write("\n")
137
                            print name
138
                            print price   
139
                        except:
140
                            #csv_data2 =  "%s" %(str1)
141
                            #data_file2.write(csv_data2)
142
                            #data_file2.write("\n")   
143
                            print str1
144
        except:    
145
          ct = int(da.get_extra_vars('mobilestore_count'))
146
          if ct>800:
147
            fails = int(da.get_extra_vars('mobilestore_fails'))
148
            fails = fails+1
149
            da.set_extra_vars('mobilestore_fails',str(fails),'')
150
            if fails > 40:
151
                da.set_extra_vars('mobilestore_flag','FALSE','')
152
 
153
          print " something else"
154
        #data_file1.close()
155
        #data_file2.close()    
156
SPIDER = mobilestore_spider0()