2013-05-28 4 views
2

Я хочу, чтобы расходы на мобильные телефоны с этого сайта http://www.univercell.in/buy/SMARTкак извлекать данные ... Страница загружается с помощью Ajax

я попытался проверить его, так что я использовал: scarpy оболочки http://www.univercell.in/control/AjaxCategoryDetail?productCategoryId=PRO-SMART&category_id=PRO-SMART&attrName=&min=&max=&sortSearchPrice=&VIEW_INDEX=2&VIEW_SIZE=15&serachupload=&sortupload=

Но я не могу подключиться к этому сайту. Когда страница загружается с помощью ajax, я обнаружил start_url, используя firebug. Может ли кто-нибудь предложить мне, где я ошибаюсь

ответ

0

Как насчет написания сценария JavaScript для выполнения действий, которые уже выполняются при нажатии на номер страницы, а затем просто сбрасывают XML, который возвращается с сервера. Я имею в виду попытку сделать звонки на сервер, как если бы сайт был размещен на вашем рабочем столе!

Функция JavaScript, вызываемая при нажатии на номер, равна paginateList('numberOfPage'), где numberOfPage - это страница, которую вы хотите посетить.

Тело функции

function paginateList(viewIndex) { 
     var productCategoryId = document.pageSelect.category_id.value; 
     var viewSize = document.pageSelect.VIEW_SIZE.value; 
     var min = ""; 
     if(document.pageSelect.min!=null) 
      min = document.pageSelect.min.value; 
     var max = ""; 
     if(document.pageSelect.max!=null) 
      max = document.pageSelect.max.value; 
     var attrName = ""; 
     if(document.pageSelect.attrName!=null) 
     attrName = document.pageSelect.attrName.value; 
     if(attrName==""){ 
     var commaAttr=document.getElementById('commaAttr'); 
      attrName=commaAttr.value; 
      } 
     var limitView = 'true'; 
     var sortSearchPrice = ""; 
     if(document.pageSelect.sortSearchPrice!=null) 
     sortSearchPrice = document.pageSelect.sortSearchPrice.value; 
      var url2="/control/AjaxCategoryDetail?productCategoryId="+productCategoryId+"&category_id="+productCategoryId+"&attrName="+attrName+"&min="+min+"&max="+max+"&sortSearchPrice="+sortSearchPrice+"&VIEW_INDEX="+viewIndex+"&VIEW_SIZE="+viewSize+"&serachupload=&sortupload="; 
      pleaseWait('Y'); 
      jQuery.ajax({url: url2, 
      data: null, 
      type: 'post', 
      async: false, 
      success: function(data) { 
       $('#searchResult').html(data); 
       pleaseWait('N'); 
      }, 
      error: function(data) { 
       alert("Error during product searching"); 
      } 
     }); 

Используйте их, чтобы получить данные с каждой страницы рекурсивно.

Надеюсь, это поможет!

+0

Как включить этот javascript в file.py ???? –

+0

Вам не нужно включать его в файл py. Вы можете просто вставить его в файл .html! – Panagiotis

0

Вот ваш паук:

from scrapy.item import Item, Field 
from scrapy.spider import BaseSpider 
from scrapy.selector import HtmlXPathSelector 


class UnivercellItem(Item): 
    vendor = Field() 
    model = Field() 
    price = Field() 

BASE_URL = "http://www.univercell.in/control/AjaxCategoryDetail?productCategoryId=PRO-SMART&category_id=PRO-SMART&attrName=&min=&max=&sortSearchPrice=&VIEW_INDEX=%s&VIEW_SIZE=15&serachupload=&sortupload=" 

class UnivercellSpider(BaseSpider): 
    name = "univercell_spider" 
    allowed_domains = ["www.univercell.in"] 
    start_urls = [BASE_URL % index for index in range(1, 21)] 

    def parse(self, response): 
     hxs = HtmlXPathSelector(response) 
     mobiles = hxs.select("//div[@class='productsummary']") 
     print mobiles 
     for mobile in mobiles: 
      item = UnivercellItem() 
      item['vendor'] = mobile.select('.//div[1]/div/text()').extract()[0].strip() 
      item['model'] = mobile.select('.//div[3]/div[1]/a/text()').extract()[0].strip() 
      item['price'] = mobile.select('.//span[@class="regularPrice"]/span/text()').extract()[0].strip() 
      yield item 

сохранить его в spider.py и запустить через scrapy runspider spider.py -o output.json. Тогда в output.json вы увидите:

{"model": "T375", "vendor": "LG", "price": "Special Price Click Here"} 
{"model": "P725 Optimus 3D Max", "vendor": "LG", "price": "Special Price Click Here"} 
{"model": "P705 Optimus L7", "vendor": "LG", "price": "Special Price Click Here"} 
{"model": "9320 Curve", "vendor": "Blackberry", "price": "Special Price Click Here"} 
{"model": "Xperia Sola", "vendor": "Sony", "price": "Rs.14,500.00"} 
{"model": "Xperia U", "vendor": "Sony", "price": "Special Price Click Here"} 
{"model": "Lumia 610", "vendor": "Nokia", "price": "Special Price Click Here"} 
... 

Надежда, что помогает.

Смежные вопросы