Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 14 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,19 +62,20 @@ Main class of this library.

https://docs.scrapingant.com/request-response-format#available-parameters

| Param | Type | Default |
|-------------------|----------------------------------------------------------------------------------------------------------------------------|------------|
| url | <code>string</code> | |
| method | <code>string</code> | GET |
| cookies | <code>List[Cookie]</code> | None |
| headers | <code>List[Dict[str, str]]</code> | None |
| js_snippet | <code>string</code> | None |
| proxy_type | <code>ProxyType</code> | datacenter |
| proxy_country | <code>str</code> | None |
| wait_for_selector | <code>str</code> | None |
| browser | <code>boolean</code> | True |
| data | same as [requests param 'data'](https://requests.readthedocs.io/en/latest/user/quickstart/#more-complicated-post-requests) | None |
| json | same as [requests param 'json'](https://requests.readthedocs.io/en/latest/user/quickstart/#more-complicated-post-requests) | None |
| Param | Type | Default |
|---------------------|----------------------------------------------------------------------------------------------------------------------------|------------|
| url | <code>string</code> | |
| method | <code>string</code> | GET |
| cookies | <code>List[Cookie]</code> | None |
| headers | <code>List[Dict[str, str]]</code> | None |
| js_snippet | <code>string</code> | None |
| proxy_type | <code>ProxyType</code> | datacenter |
| proxy_country | <code>str</code> | None |
| wait_for_selector | <code>str</code> | None |
| browser | <code>boolean</code> | True |
| return_page_source | <code>boolean</code> | False |
| data | same as [requests param 'data'](https://requests.readthedocs.io/en/latest/user/quickstart/#more-complicated-post-requests) | None |
| json | same as [requests param 'json'](https://requests.readthedocs.io/en/latest/user/quickstart/#more-complicated-post-requests) | None |

**IMPORTANT NOTE:** <code>js_snippet</code> will be encoded to Base64 automatically by the ScrapingAnt client library.

Expand Down
2 changes: 1 addition & 1 deletion scrapingant_client/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = "2.0.0"
__version__ = "2.0.1"

from scrapingant_client.client import ScrapingAntClient
from scrapingant_client.cookie import Cookie
Expand Down
8 changes: 8 additions & 0 deletions scrapingant_client/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ def _form_payload(
proxy_country: Optional[str] = None,
wait_for_selector: Optional[str] = None,
browser: bool = True,
return_page_source: Optional[bool] = None,
) -> Dict:
request_data = {'url': url}
if cookies is not None:
Expand All @@ -54,6 +55,9 @@ def _form_payload(
if wait_for_selector is not None:
request_data['wait_for_selector'] = wait_for_selector
request_data['browser'] = browser
if return_page_source:
assert browser, 'return_page_source can only be used with browser=True'
request_data['return_page_source'] = return_page_source
return request_data

def _parse_response(self, response_status_code: int, response_data: Dict, url: str) -> Response:
Expand Down Expand Up @@ -90,6 +94,7 @@ def general_request(
proxy_country: Optional[str] = None,
wait_for_selector: Optional[str] = None,
browser: bool = True,
return_page_source: Optional[bool] = None,
data=None,
json=None,
) -> Response:
Expand All @@ -101,6 +106,7 @@ def general_request(
proxy_country=proxy_country,
wait_for_selector=wait_for_selector,
browser=browser,
return_page_source=return_page_source,
)
try:
response = self.requests_session.request(
Expand Down Expand Up @@ -129,6 +135,7 @@ async def general_request_async(
proxy_country: Optional[str] = None,
wait_for_selector: Optional[str] = None,
browser: bool = True,
return_page_source: Optional[bool] = None,
data=None,
json=None,
) -> Response:
Expand All @@ -142,6 +149,7 @@ async def general_request_async(
proxy_country=proxy_country,
wait_for_selector=wait_for_selector,
browser=browser,
return_page_source=return_page_source,
)
async with httpx.AsyncClient(
headers={
Expand Down
8 changes: 6 additions & 2 deletions tests/test_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ def test_integration():
'&proxy_type=datacenter'
'&proxy_country=test_country'
'&wait_for_selector=test_selector'
'&browser=True',
'&browser=True'
'&return_page_source=True',
json={
"html": "test_content",
"cookies": "test_key1=test_value1;test_key2=test_value2",
Expand All @@ -40,6 +41,7 @@ def test_integration():
proxy_country='test_country',
wait_for_selector='test_selector',
browser=True,
return_page_source=True,
)
expected = {
'content': 'test_content',
Expand Down Expand Up @@ -68,7 +70,8 @@ async def test_integration_async(httpx_mock: HTTPXMock):
'&proxy_type=datacenter'
'&proxy_country=test_country'
'&wait_for_selector=test_selector'
'&browser=true',
'&browser=true'
'&return_page_source=true',
json={
"html": "test_content",
"cookies": "test_key1=test_value1;test_key2=test_value2",
Expand All @@ -87,6 +90,7 @@ async def test_integration_async(httpx_mock: HTTPXMock):
proxy_country='test_country',
wait_for_selector='test_selector',
browser=True,
return_page_source=True,
)
expected = {
'content': 'test_content',
Expand Down