2015-05-20 7 views
13

Google Play Store'dan en son yorumları taramaya çalışıyorum ancak en son yorumları almak için bir posta isteği göndermem gerekiyor.Mesaj Gönder Scrub'da İstek

Postacı ile çalışır ve istenen yanıtı alırım.

enter image description here

ama terminalde bir post isteği bana bir sunucu hatası ex

verir: Bu sayfanın https://play.google.com/store/apps/details?id=com.supercell.boombeach

curl -H "Content-Type: application/json" -X POST -d '{"id": "com.supercell.boombeach", "reviewType": '0', "reviewSortOrder": '0', "pageNum":'0'}' https://play.google.com/store/getreviews 

için

scrapy sadece görmezden sunucu hatası ve

verir bu satır:

frmdata = {"id": "com.supercell.boombeach", "reviewType": 0, "reviewSortOrder": 0, "pageNum":0} 
     url = "https://play.google.com/store/getreviews" 
     yield Request(url, callback=self.parse, method="POST", body=urllib.urlencode(frmdata)) 

cevap

18

sizin formdata her eleman türü dizesi/unicode olduğundan emin olun

frmdata = {"id": "com.supercell.boombeach", "reviewType": '0', "reviewSortOrder": '0', "pageNum":'0'} 
url = "https://play.google.com/store/getreviews" 
yield FormRequest(url, callback=self.parse, formdata=frmdata) 

Bu scrapy Post in kullanarak

In [1]: from scrapy.http import FormRequest 

In [2]: frmdata = {"id": "com.supercell.boombeach", "reviewType": '0', "reviewSortOrder": '0', "pageNum":'0'} 

In [3]: url = "https://play.google.com/store/getreviews" 

In [4]: r = FormRequest(url, formdata=frmdata) 

In [5]: fetch(r) 
2015-05-20 14:40:09+0530 [default] DEBUG: Crawled (200) <POST  https://play.google.com/store/getreviews> (referer: None) 
[s] Available Scrapy objects: 
[s] crawler <scrapy.crawler.Crawler object at 0x7f3ea4258890> 
[s] item  {} 
[s] r   <POST https://play.google.com/store/getreviews> 
[s] request <POST https://play.google.com/store/getreviews> 
[s] response <200 https://play.google.com/store/getreviews> 
[s] settings <scrapy.settings.Settings object at 0x7f3eaa205450> 
[s] spider  <Spider 'default' at 0x7f3ea3449cd0> 
[s] Useful shortcuts: 
[s] shelp()   Shell help (print this help) 
[s] fetch(req_or_url) Fetch request (or URL) and update local objects 
[s] view(response) View response in a browser 
+0

teşekkürler. Yanıt verisini hala göremiyorum. Nasıl alınır? –

+2

response.body size tam html öğesini verecektir. Bazı özel girişler almak istiyorsanız 'response.xpath (YOUR_XPATH_HERE)' kullanabilirsiniz. – Jithin

+0

Thiis, r.body 'pageNum = 0 & id = com.supercell.boombeach & reviewType = 0 & reviewSortOrder = 0' –

0

Örnek Sayfa gitgel yapacağını düşünüyorum:

def directory_page(self,response): 
    if response: 
     profiles = response.xpath("//div[@class='heading-h']/h3/a/@href").extract() 
     for profile in profiles: 
      yield Request(urljoin(response.url,profile),callback=self.profile_collector) 

     page = response.meta['page'] + 1 
     if page : 
      yield FormRequest('https://rotmanconnect.com/AlumniDirectory/getmorerecentjoineduser', 
             formdata={'isSortByName':'false','pageNumber':str(page)}, 
             callback= self.directory_page, 
             meta={'page':page}) 
    else: 
     print "No more page available" 
11

Yukarıdaki cevap sorunu gerçekten çözmedi. Verileri, istek gövdesi olarak JSON verileri yerine paramitter olarak gönderiyorlar. http://bajiecc.cc/questions/1135255/scrapy-formrequest-sending-json itibaren

:

my_data = {'field1': 'value1', 'field2': 'value2'} 
request = scrapy.Request(url, method='POST', 
          body=json.dumps(my_data), 
          headers={'Content-Type':'application/json'}) 
+0

Vücut talebi nasıl alabilirim? '' 'Request.body'' kullanıyorum form verisi bana geri dönüyor ... –

+1

Eğer isteğin sonucunu istiyorsan, cevaptan almalısın. Scrapy.Request, eğer talep verilmişse ('getiri talebi') ve yanıt alındığında çağrılacak bir 'callback' argümanına sahip olabilir. Geri arama fonksiyonundaki verileri okumak için (örneğin: 'parse_entry (self, response)') sadece yanıt verin. 'jsonresponse = json.loads (response.body_as_unicode())' kullandım çünkü bir json aldım – aitorhh