我想通过python请求在python中发出这个请求:
curl -X POST \
--form fileItems[0].fileToUpload=@"/path/to/file.mp4" \
--form fileItems[0].path="/something/" \
--form fileItems[0].replacing=false \
--form fileItems[1].fileToUpload=@"/path/to/file.mp4" \
--form fileItems[1].path="/something/" \
--form fileItems[1].replacing=false \
someurl.com/files/
python中的等价物是什么? 我写了这个:
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)
但是我收到了这个错误:
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 :(得分:0)
我自己解决了。事实证明, - form发送request.files中的文件和post参数中的其他参数。所以相应的上述curl函数将是:
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], })
我创建了一个用于测试的Web服务器并对其执行了curl请求,并找出了请求的格式应该是什么。
我在这里留下这个答案,以防将来有人遇到同样的问题。
答案 1 :(得分:-2)
第一个导入请求模块,用于python执行HTTP请求和beautifulsoup来解析数据。
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)
它会使用网址调用 get_page ,它将转到该链接,内容将转到 page_processor 。页面处理器将使用beautifulSoup解析内容。
我们可以使用GET和POST两种方法 例如 GET:
page = self.agent.get(link).content
POST:
post_params = {'roll': '1','address':'mumbai'}
page = self.agent.post(link, files=post_params)