2017-04-04 13 views
-1

私はレビューでいくつかのアプリの詳細を取得しようとしています。問題は、各アプリの詳細をレビューに関連付ける方法がわからないことです。コードサンプルを以下に示します:Scrapy:レビュー付きのGoogle Playアプリページをクロールする

def parse(self, response): 
    l = ItemLoader(item=GamesScraperItem(), response=response) 
    #Get the details of the app here 
    #... 

    url = "https://play.google.com/store/getreviews" 
    #...   
    for num in range(111): 
     form_data = {"id": _id, "reviewType": '0', "reviewSortOrder": '4', "pageNum": str(num),"xhr": '1'} 
     sleep(5) 
     yield FormRequest(url=url,headers=headers_data, formdata=form_data,callback=self.parse_reviews) 

def parse_reviews(self, response):  
    response_data = re.findall("\[\[.*", response.body) 
    if response_data: 
     try: 
      text = json.loads(response_data[0] + ']')    
      sell = Selector(text=text[0][2]) 
     except: 
      pass 
     #Get a list of reviews data 
     #... 

すべてのレビューを1つのリストに参加させてから、アプリケーションの詳細に追加する方法があります。

ありがとうございました。

+0

あなたはtime.sleep' scrapyがasynchroniousであり、それはわずか数ブロックのすべてを、試してみてください '使うべきではない[' download_delay'設定](https://doc.scrapy.org/en/latest/topics/settings .html#download-delay) – Granitosaurus

答えて

0

Request.metaの項目に商品を運ぶことができます。

def parse(self, response): 
    l = ItemLoader(item=GamesScraperItem(), response=response) 
    #Get the details of the app here 
    url = "https://play.google.com/store/getreviews" 
    form_data = {"id": _id, "reviewType": '0', "reviewSortOrder": '4', "pageNum": "1","xhr": '1'} 
    yield FormRequest(url=url, 
         headers=headers_data, 
         formdata=form_data, 
         callback=self.parse_reviews 
         meta={'item': l.load_item()}) # <--- 

def parse_reviews(self, response):  
    item = response.meta['item'] # <--- 
    l = ItemLoader(item=item, response=response) 
    # add more stuff to the loader, it will have everything that was added in parse method 
    # ... 
    # do page 2 the same way you did page 1 in parse method 
    form_data = {"id": _id, "reviewType": '0', "reviewSortOrder": '4', "pageNum": "2","xhr": '1'} 
関連する問題