2017-11-20 4 views
0

내가 파이썬에서이 요청을 할 :파이썬에서이 http 요청을 보내는 방법은 무엇입니까? 파이썬 요청을 통해

curl -X POST \ 
    --form fileItems[0][email protected]"/path/to/file.mp4" \ 
    --form fileItems[0].path="/something/" \ 
    --form fileItems[0].replacing=false \ 
    --form fileItems[1][email protected]"/path/to/file.mp4" \ 
    --form fileItems[1].path="/something/" \ 
    --form fileItems[1].replacing=false \ 
someurl.com/files/ 

은 무엇 파이썬에 해당하는 것입니까? 나는이 쓴 :

files = {'fileItems[0].fileToUpload': open('/path/to/file.mp4', 'rb'), 
    'fileItems[0].path': '/medias/videos/comedian_contest/', 'fileItems[0].replacing': False} 
response = requests.post(url='http://storage.backtory.com/files', files=files, headers=headers) 

을하지만 난이 오류 얻을 : 데이터를 구문 분석에 대한 HTTP 요청과 BeautifulSoup로를 할 수있는 파이썬에 대한

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/usr/lib/python3/dist-packages/requests/api.py", line 107, in post 
return request('post', url, data=data, json=json, **kwargs) 
File "/usr/lib/python3/dist-packages/requests/api.py", line 53, in request 
return session.request(method=method, url=url, **kwargs) 
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 454, in request 
prep = self.prepare_request(req) 
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 388, in prepare_request 
hooks=merge_hooks(request.hooks, self.hooks), 
File "/usr/lib/python3/dist-packages/requests/models.py", line 296, in prepare 
self.prepare_body(data, files, json) 
File "/usr/lib/python3/dist-packages/requests/models.py", line 447, in prepare_body 
(body, content_type) = self._encode_files(files, data) 
File "/usr/lib/python3/dist-packages/requests/models.py", line 150, in _encode_files 
fdata = fp.read() 
AttributeError: 'bool' object has no attribute 'read' 
+0

requests.post에 대한 [documentation] (http://docs.python-requests.org/en/master/user/quickstart/#post-a-multipart-encoded-file)을 읽으십시오. – YSelf

+0

@ 자기 자신은 가지고 있지만, 어떻게 구현 해야할지 모르겠다. 나는 API를 사용하고 있으며, curl 함수가 API 문서에있는 유일한 것입니다. 요청에이 인수를 전달하는 방법을 알지 못합니다. –

답변

0

내가 나 자신을 해결했다. 결과적으로, --form은 requests.files의 파일과 post 매개 변수의 다른 매개 변수를 보냅니다. 그래서 위의 컬 함수의 동등한은 다음과 같습니다

headers = {'Authorization': auth_header, 'some_header': header } 
files = {"fileItems[0].fileToUpload": open(file_path, 'rb')} 
response = requests.post(url='http://some_url.com/some_path', files=files, headers=headers, 
         data={'fileItems[0].path': ["/some_path/path/path/"], 
           'fileItems[0].replacing': [False], }) 

나는 테스트를위한 웹 서버를 만들어 그 위에 컬 요청을 수행하고 요청의 형식이되어야 ​​하는지를 알아 냈어.

향후이 문제가 발생할 경우를 대비하여이 대답을 남겨 두겠습니다.

-2

먼저 가져 오기 요청 모듈을.

import requests 
from bs4 import BeautifulSoup 

class Cralwer(): 
    def __init__(self): 
     self.agent = requests 

    def get_page(self,link): 
      page = self.agent.get(link).content 
      self.page_processor(page) 
      break 

    def page_processor(self,content): 
     print content 
     soup = BeautifulSoup(content,'html.parser') 
     for jobs in soup.find_all(attrs={"whatever the attribute"}): 
        //DO WHAT EVER YOU WHAT TO DO 

get_page(link) 

그것은 URL로 get_page를 호출하고이 링크로 이동하고 내용이 page_processor로 이동합니다. 페이지 프로세서가 beautifulSoup로 콘텐츠를 구문 분석합니다.

우리는 두 가지 방법이 GET 사용 예 GET의 경우 POST 수 있습니다

page = self.agent.get(link).content 

POST를 :

post_params = {'roll': '1','address':'mumbai'} 
page = self.agent.post(link, files=post_params) 
+0

POST 요청을해야합니다. 알았어! –

+0

intsted라는 매개 변수를 GET으로 사용하여 POST를 수행하십시오. –

+0

나는 그것을했고, 단지 잘 풀리지 않았다. 나는 그 질문에 글을 썼다. –

관련 문제