MCPcopy
hub / github.com/scrapy/scrapy / request_to_curl

Function request_to_curl

scrapy/utils/request.py:175–204  ·  view source on GitHub ↗

Converts a :class:`~scrapy.Request` object to a curl command. :param :class:`~scrapy.Request`: Request object to be converted :return: string containing the curl command

(request: Request)

Source from the content-addressed store, hash-verified

173
174
175def request_to_curl(request: Request) -> str:
176 """
177 Converts a :class:`~scrapy.Request` object to a curl command.
178
179 :param :class:`~scrapy.Request`: Request object to be converted
180 :return: string containing the curl command
181 """
182 method = request.method
183
184 data = f"--data-raw '{request.body.decode('utf-8')}'" if request.body else ""
185
186 headers = " ".join(
187 f"-H '{k.decode()}: {v[0].decode()}'" for k, v in request.headers.items()
188 )
189
190 url = request.url
191 cookies = ""
192 if request.cookies:
193 if isinstance(request.cookies, dict):
194 cookie = "; ".join(f"{k}={v}" for k, v in request.cookies.items())
195 cookies = f"--cookie '{cookie}'"
196 elif isinstance(request.cookies, list):
197 cookie = "; ".join(
198 f"{next(iter(c.keys()))}={next(iter(c.values()))}"
199 for c in request.cookies
200 )
201 cookies = f"--cookie '{cookie}'"
202
203 curl_cmd = f"curl -X {method} {url} {data} {headers} {cookies}".strip()
204 return " ".join(curl_cmd.split())

Callers 1

_test_requestMethod · 0.90

Calls 4

itemsMethod · 0.80
keysMethod · 0.80
valuesMethod · 0.80
joinMethod · 0.45

Tested by 1

_test_requestMethod · 0.72