2016-07-30 6 views
0

私はHTMLページを解析するPythonサーバーを持っていますが、スクリプトはうまく動作します。しかし、私は引数を送信することでこのサーバーを呼び出すアンドロイドアプリケーションを持っています。PythonでPOST/GETリクエストを行う方法は?

私は、アンドロイドアプリケーションによって投稿されたURLをサーバーが取得し、そのHTMLページのデータを解析するようにします。

私のクエリは次のとおりです: - どの方法を使用しますか? は私がチュートリアルを行っていると私はそれがPOSTメソッドであると考えまたはPOST

をGET。

以下は私が作成したスクリプト/サーバーです。何を編集するべきか教えてください。

import cherrypy 
import ConfigParser 
import json 
import mimetypes 
import os 
from jinja2 import Environment, FileSystemLoader 
from bs4 import BeautifulSoup 
import requests 
import urlparse 
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer 
import SocketServer 

######################################################################## 
details_array=[] 
small_details_array=[] 
price_cell_array=[] 
lst = [] 
URL_path 

class S(BaseHTTPRequestHandler): 

    def do_GET(self): 
     self._set_headers() 
     URL_path = urlparse.urlparse(self.path) 
     request_id = URL_path.path 

    def do_POST(self): 
     self._set_headers() 
     URL_path = urlparse.urlparse(self.path) 
     request_id = URL_path.path 


r = requests.get(URL_path)#the URL_path holds the URL 
data = r.text 
soup = BeautifulSoup(data,"html.parser") 
table = soup.find('table',{'class':'table'}) 
s="" 

targetFile=open("plist","w") 
detailtext = table.findAll('div',{'class':'detailtext'}) 
for det in detailtext: 

     details_array.append(det.text) 

smalldetails = table.findAll('div',{'style':'padding-top:5px'}) 

for smallDet in smalldetails: 

     small_details_array.append(smallDet.text); 


price_cells = table.findAll('td', {'class': 'pricecell'}) 
for price_cell in price_cells: 
    price_cell_array.append(price_cell.text) 


for i in range(len(details_array)): 
     d_arr = {} 
     d_arr['detail']=details_array[i] 
     temp = small_details_array[i].split('\n') 
     d_arr['talktime'] = temp[1] 
     d_arr['keyword']=temp[3] 
     tempnew = price_cell_array[i].split('\n') 
     d_arr['price'] = tempnew[1] 
     d_arr['validity'] = tempnew[3] 
     # global list 
     lst.append(d_arr) 

t_arr={} 
t_arr['events'] = lst; 
print json.dumps(t_arr) 
targetFile.write("[TopUpList]"+"\n"+"events=") 
targetFile.write(json.dumps(t_arr)) 
targetFile.write('\n[culturalEvents]\nevents={"events": [{"venue": "bangalore", "name": "Culttest"}]}') 
targetFile.close() 
######################################################################### 

class Server(): 

    @cherrypy.expose 
    def index(self): 

     return "Seems Like You're Lost :D" 

    @cherrypy.expose 
    def eventsList(self,choice): 

     message="Success, Event List Obtained" 
     status_code=0; 
     events=[] 
     try: 
      if choice.title() == "Cultural": 
       events = cultural_event_list['events'] 
      elif choice.title() == "Prodlisting": 
       events = lists['events'] 
      else: 
       status_code=-1 
       message="Failed, No Such Event Type Enlisted" 
     except: 
       status_code=-1 
       message="Failed, Server Error! Error Occured while retreiving Event List" 
     return json.dumps({'status_code':status_code,'message':message,'events':events}) 

    @cherrypy.expose 
    def eventsStatus(self,choice): 

     message="Success, Event List Obtained" 
     status_code=0; 
     events=[] 
     try: 

      if choice.title() == "Cultural": 
       events = cultural_event_list['events'] 
      elif choice.title() == "Prodlisting": 
       events = lists['events'] 
      else: 
       status_code=-1 
       message="Failed, No Such Event Type Enlisted" 
     except: 
       status_code=-1 
       message="Failed, Server Error! Error Occured while retreiving Event List" 
     return json.dumps({'status_code':status_code,'message':message,'hash':json.dumps(events).__hash__()}) 

if __name__ == '__main__': 
    ''' Setting up the Server with Specified Configuration''' 
    ''' 
    config = ConfigParser.RawConfigParser() 
    config.read('server.conf') 
    cherrypy.server.socket_host = config.get('server','host') 
    cherrypy.server.socket_port = int(config.get('server','port')) 
    cherrypy.server.socket_host = '127.0.0.1' 
    cherrypy.server.socket_port = 5000 
    ''' 

    list = ConfigParser.RawConfigParser() 
    cherrypy.config.update({'server.socket_host': '0.0.0.0',}) 
    cherrypy.config.update({'server.socket_port': int(os.environ.get('PORT', '5000')),}) 
    list.read('plist')#the file from where it reads 
    lists=json.loads(list.get('TopUpList','events')) 
    cultural_event_list=json.loads(list.get('culturalEvents','events')) 

cherrypy.quickstart(Server()) 

P.私はアンドロイド部分は、私が間違っている場合は、親切に私を修正するPythonサーバーに送信されるPOST要求を必要と思う。

答えて

0

GET - 指定されたリソース POSTからの要求データ - 指定されたリソースだから、

に加工することが承認した登録局に提出データは、データを提出したい場合は、POST

を参照してください使用:http://www.w3schools.com/tags/ref_httpmethods.asp

0

ベースを結論として、サーバー側で何も更新せずに情報を取得したいのであれば、私はGET要求が理論的には十分に理論的にもっと忠実であると言えるでしょう。

したがって、www.yourdomain.com/?q=domaintocrawl.comのようなURLでリクエストして、解析されたデータを取得するだけです。

関連する問題