update readme and api
Browse files- .gitignore +1 -0
- README.md +14 -1
- api/__pycache__/main.cpython-310.pyc +0 -0
- api/main.py +7 -2
- config.yaml +0 -1
- src/extraction.py +1 -1
- testing.ipynb +622 -1
.gitignore
CHANGED
@@ -1,3 +1,4 @@
|
|
1 |
src/__pycache__/
|
|
|
2 |
*.ipynb
|
3 |
*.csv
|
|
|
1 |
src/__pycache__/
|
2 |
+
api/__pycache__/
|
3 |
*.ipynb
|
4 |
*.csv
|
README.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1 |
# MeLi Scraper
|
2 |
-
Web scrapping proyect for
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
## API
|
5 |
To run the API for this project please run
|
@@ -7,3 +19,4 @@ To run the API for this project please run
|
|
7 |
docker compose up
|
8 |
```
|
9 |
|
|
|
|
1 |
# MeLi Scraper
|
2 |
+
Web scrapping proyect for vehicle prices in Colombia. To Mercado Libre page with educational focus
|
3 |
+
## Locally request
|
4 |
+
Please create your virtual environment before, for example
|
5 |
+
```bash
|
6 |
+
python3 -m venv myenv
|
7 |
+
source myenv/bin/activate
|
8 |
+
```
|
9 |
+
Then run
|
10 |
+
```bash
|
11 |
+
PYTHONPATH=$PWD
|
12 |
+
pip install -r requirements.txt
|
13 |
+
python src/extraction.py
|
14 |
+
```
|
15 |
|
16 |
## API
|
17 |
To run the API for this project please run
|
|
|
19 |
docker compose up
|
20 |
```
|
21 |
|
22 |
+
|
api/__pycache__/main.cpython-310.pyc
DELETED
Binary file (402 Bytes)
|
|
api/main.py
CHANGED
@@ -1,9 +1,14 @@
|
|
1 |
from fastapi import FastAPI
|
2 |
from src.extraction import main
|
|
|
3 |
|
4 |
app = FastAPI()
|
5 |
|
6 |
-
|
7 |
-
|
|
|
|
|
|
|
|
|
8 |
data = await main(product)
|
9 |
return data
|
|
|
1 |
from fastapi import FastAPI
|
2 |
from src.extraction import main
|
3 |
+
from pydantic import BaseModel, Field
|
4 |
|
5 |
app = FastAPI()
|
6 |
|
7 |
+
class Product(BaseModel):
|
8 |
+
product: str = Field("Producto a buscar", example = "carros")
|
9 |
+
|
10 |
+
@app.post("/product")
|
11 |
+
async def get_data(product: Product):
|
12 |
+
print(product)
|
13 |
data = await main(product)
|
14 |
return data
|
config.yaml
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
URL: 'https://listado.mercadolibre.com.co'
|
|
|
|
src/extraction.py
CHANGED
@@ -39,7 +39,7 @@ async def organize_page_data(url: str = BASE_URL ,product= None):
|
|
39 |
print('follow page not found')
|
40 |
prices = get_all_product_prices_for_page(s)
|
41 |
urls = get_all_product_urls_for_page(s)
|
42 |
-
output_dict = {product:products, 'price':prices ,'link':urls}
|
43 |
return pd.DataFrame(output_dict), follow
|
44 |
|
45 |
|
|
|
39 |
print('follow page not found')
|
40 |
prices = get_all_product_prices_for_page(s)
|
41 |
urls = get_all_product_urls_for_page(s)
|
42 |
+
output_dict = {'product':products, 'price':prices ,'link':urls}
|
43 |
return pd.DataFrame(output_dict), follow
|
44 |
|
45 |
|
testing.ipynb
CHANGED
@@ -13,7 +13,628 @@
|
|
13 |
"import pandas as pd\n",
|
14 |
"from lxml import etree\n",
|
15 |
"import datetime\n",
|
16 |
-
"import json"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
]
|
18 |
},
|
19 |
{
|
|
|
13 |
"import pandas as pd\n",
|
14 |
"from lxml import etree\n",
|
15 |
"import datetime\n",
|
16 |
+
"import json\n",
|
17 |
+
"import requests"
|
18 |
+
]
|
19 |
+
},
|
20 |
+
{
|
21 |
+
"cell_type": "code",
|
22 |
+
"execution_count": 37,
|
23 |
+
"metadata": {},
|
24 |
+
"outputs": [
|
25 |
+
{
|
26 |
+
"ename": "ConnectionError",
|
27 |
+
"evalue": "HTTPConnectionPool(host='localhost', port=8000): Max retries exceeded with url: /product (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x704b7591fbb0>: Failed to establish a new connection: [Errno 111] Connection refused'))",
|
28 |
+
"output_type": "error",
|
29 |
+
"traceback": [
|
30 |
+
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
31 |
+
"\u001b[0;31mConnectionRefusedError\u001b[0m Traceback (most recent call last)",
|
32 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/urllib3/connection.py:203\u001b[0m, in \u001b[0;36mHTTPConnection._new_conn\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 202\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 203\u001b[0m sock \u001b[38;5;241m=\u001b[39m \u001b[43mconnection\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate_connection\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 204\u001b[0m \u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_dns_host\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mport\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 205\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 206\u001b[0m \u001b[43m \u001b[49m\u001b[43msource_address\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msource_address\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 207\u001b[0m \u001b[43m \u001b[49m\u001b[43msocket_options\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msocket_options\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 208\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 209\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m socket\u001b[38;5;241m.\u001b[39mgaierror \u001b[38;5;28;01mas\u001b[39;00m e:\n",
|
33 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/urllib3/util/connection.py:85\u001b[0m, in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address, socket_options)\u001b[0m\n\u001b[1;32m 84\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 85\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m err\n\u001b[1;32m 86\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 87\u001b[0m \u001b[38;5;66;03m# Break explicitly a reference cycle\u001b[39;00m\n",
|
34 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/urllib3/util/connection.py:73\u001b[0m, in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address, socket_options)\u001b[0m\n\u001b[1;32m 72\u001b[0m sock\u001b[38;5;241m.\u001b[39mbind(source_address)\n\u001b[0;32m---> 73\u001b[0m \u001b[43msock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect\u001b[49m\u001b[43m(\u001b[49m\u001b[43msa\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 74\u001b[0m \u001b[38;5;66;03m# Break explicitly a reference cycle\u001b[39;00m\n",
|
35 |
+
"\u001b[0;31mConnectionRefusedError\u001b[0m: [Errno 111] Connection refused",
|
36 |
+
"\nThe above exception was the direct cause of the following exception:\n",
|
37 |
+
"\u001b[0;31mNewConnectionError\u001b[0m Traceback (most recent call last)",
|
38 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/urllib3/connectionpool.py:790\u001b[0m, in \u001b[0;36mHTTPConnectionPool.urlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001b[0m\n\u001b[1;32m 789\u001b[0m \u001b[38;5;66;03m# Make the request on the HTTPConnection object\u001b[39;00m\n\u001b[0;32m--> 790\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 791\u001b[0m \u001b[43m \u001b[49m\u001b[43mconn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 792\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 793\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 794\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout_obj\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 795\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 796\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 797\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 798\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 799\u001b[0m \u001b[43m \u001b[49m\u001b[43mresponse_conn\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mresponse_conn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 800\u001b[0m \u001b[43m \u001b[49m\u001b[43mpreload_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpreload_content\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 801\u001b[0m \u001b[43m \u001b[49m\u001b[43mdecode_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdecode_content\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 802\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mresponse_kw\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 803\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 805\u001b[0m \u001b[38;5;66;03m# Everything went great!\u001b[39;00m\n",
|
39 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/urllib3/connectionpool.py:496\u001b[0m, in \u001b[0;36mHTTPConnectionPool._make_request\u001b[0;34m(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)\u001b[0m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 496\u001b[0m \u001b[43mconn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 497\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 498\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 499\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 500\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 501\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 502\u001b[0m \u001b[43m \u001b[49m\u001b[43mpreload_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpreload_content\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 503\u001b[0m \u001b[43m \u001b[49m\u001b[43mdecode_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdecode_content\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 504\u001b[0m \u001b[43m \u001b[49m\u001b[43menforce_content_length\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43menforce_content_length\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 505\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 507\u001b[0m \u001b[38;5;66;03m# We are swallowing BrokenPipeError (errno.EPIPE) since the server is\u001b[39;00m\n\u001b[1;32m 508\u001b[0m \u001b[38;5;66;03m# legitimately able to close the connection after sending a valid response.\u001b[39;00m\n\u001b[1;32m 509\u001b[0m \u001b[38;5;66;03m# With this behaviour, the received response is still readable.\u001b[39;00m\n",
|
40 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/urllib3/connection.py:395\u001b[0m, in \u001b[0;36mHTTPConnection.request\u001b[0;34m(self, method, url, body, headers, chunked, preload_content, decode_content, enforce_content_length)\u001b[0m\n\u001b[1;32m 394\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mputheader(header, value)\n\u001b[0;32m--> 395\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mendheaders\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 397\u001b[0m \u001b[38;5;66;03m# If we're given a body we start sending that in chunks.\u001b[39;00m\n",
|
41 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/http/client.py:1278\u001b[0m, in \u001b[0;36mHTTPConnection.endheaders\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1277\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CannotSendHeader()\n\u001b[0;32m-> 1278\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_output\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmessage_body\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencode_chunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mencode_chunked\u001b[49m\u001b[43m)\u001b[49m\n",
|
42 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/http/client.py:1038\u001b[0m, in \u001b[0;36mHTTPConnection._send_output\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1037\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_buffer[:]\n\u001b[0;32m-> 1038\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1040\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m message_body \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 1041\u001b[0m \n\u001b[1;32m 1042\u001b[0m \u001b[38;5;66;03m# create a consistent interface to message_body\u001b[39;00m\n",
|
43 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/http/client.py:976\u001b[0m, in \u001b[0;36mHTTPConnection.send\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 975\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mauto_open:\n\u001b[0;32m--> 976\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 977\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n",
|
44 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/urllib3/connection.py:243\u001b[0m, in \u001b[0;36mHTTPConnection.connect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 242\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mconnect\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 243\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msock \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_new_conn\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 244\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_tunnel_host:\n\u001b[1;32m 245\u001b[0m \u001b[38;5;66;03m# If we're tunneling it means we're connected to our proxy.\u001b[39;00m\n",
|
45 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/urllib3/connection.py:218\u001b[0m, in \u001b[0;36mHTTPConnection._new_conn\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 217\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m--> 218\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m NewConnectionError(\n\u001b[1;32m 219\u001b[0m \u001b[38;5;28mself\u001b[39m, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFailed to establish a new connection: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00me\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 220\u001b[0m ) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01me\u001b[39;00m\n\u001b[1;32m 222\u001b[0m \u001b[38;5;66;03m# Audit hooks are only available in Python 3.8+\u001b[39;00m\n",
|
46 |
+
"\u001b[0;31mNewConnectionError\u001b[0m: <urllib3.connection.HTTPConnection object at 0x704b7591fbb0>: Failed to establish a new connection: [Errno 111] Connection refused",
|
47 |
+
"\nThe above exception was the direct cause of the following exception:\n",
|
48 |
+
"\u001b[0;31mMaxRetryError\u001b[0m Traceback (most recent call last)",
|
49 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/requests/adapters.py:486\u001b[0m, in \u001b[0;36mHTTPAdapter.send\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 485\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 486\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[43mconn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43murlopen\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 487\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 488\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 489\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 490\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 491\u001b[0m \u001b[43m \u001b[49m\u001b[43mredirect\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 492\u001b[0m \u001b[43m \u001b[49m\u001b[43massert_same_host\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 493\u001b[0m \u001b[43m \u001b[49m\u001b[43mpreload_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 494\u001b[0m \u001b[43m \u001b[49m\u001b[43mdecode_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmax_retries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 496\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 497\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 498\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 500\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (ProtocolError, \u001b[38;5;167;01mOSError\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m err:\n",
|
50 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/urllib3/connectionpool.py:844\u001b[0m, in \u001b[0;36mHTTPConnectionPool.urlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001b[0m\n\u001b[1;32m 842\u001b[0m new_e \u001b[38;5;241m=\u001b[39m ProtocolError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mConnection aborted.\u001b[39m\u001b[38;5;124m\"\u001b[39m, new_e)\n\u001b[0;32m--> 844\u001b[0m retries \u001b[38;5;241m=\u001b[39m \u001b[43mretries\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mincrement\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 845\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43merror\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnew_e\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_pool\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_stacktrace\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msys\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexc_info\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[1;32m 846\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 847\u001b[0m retries\u001b[38;5;241m.\u001b[39msleep()\n",
|
51 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/urllib3/util/retry.py:515\u001b[0m, in \u001b[0;36mRetry.increment\u001b[0;34m(self, method, url, response, error, _pool, _stacktrace)\u001b[0m\n\u001b[1;32m 514\u001b[0m reason \u001b[38;5;241m=\u001b[39m error \u001b[38;5;129;01mor\u001b[39;00m ResponseError(cause)\n\u001b[0;32m--> 515\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m MaxRetryError(_pool, url, reason) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mreason\u001b[39;00m \u001b[38;5;66;03m# type: ignore[arg-type]\u001b[39;00m\n\u001b[1;32m 517\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIncremented Retry for (url=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m): \u001b[39m\u001b[38;5;132;01m%r\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, url, new_retry)\n",
|
52 |
+
"\u001b[0;31mMaxRetryError\u001b[0m: HTTPConnectionPool(host='localhost', port=8000): Max retries exceeded with url: /product (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x704b7591fbb0>: Failed to establish a new connection: [Errno 111] Connection refused'))",
|
53 |
+
"\nDuring handling of the above exception, another exception occurred:\n",
|
54 |
+
"\u001b[0;31mConnectionError\u001b[0m Traceback (most recent call last)",
|
55 |
+
"Cell \u001b[0;32mIn[37], line 13\u001b[0m\n\u001b[1;32m 8\u001b[0m payload \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 9\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mproduct\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcarro\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 10\u001b[0m }\n\u001b[1;32m 11\u001b[0m headers \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mContent-Type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mapplication/json\u001b[39m\u001b[38;5;124m'\u001b[39m}\n\u001b[0;32m---> 13\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mrequests\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpost\u001b[49m\u001b[43m(\u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mjson\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdumps\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpayload\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28mprint\u001b[39m(response\u001b[38;5;241m.\u001b[39mstatus_code)\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28mprint\u001b[39m(response\u001b[38;5;241m.\u001b[39mtext)\n",
|
56 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/requests/api.py:115\u001b[0m, in \u001b[0;36mpost\u001b[0;34m(url, data, json, **kwargs)\u001b[0m\n\u001b[1;32m 103\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mpost\u001b[39m(url, data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, json\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 104\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Sends a POST request.\u001b[39;00m\n\u001b[1;32m 105\u001b[0m \n\u001b[1;32m 106\u001b[0m \u001b[38;5;124;03m :param url: URL for the new :class:`Request` object.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[38;5;124;03m :rtype: requests.Response\u001b[39;00m\n\u001b[1;32m 113\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 115\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpost\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mjson\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mjson\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
|
57 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/requests/api.py:59\u001b[0m, in \u001b[0;36mrequest\u001b[0;34m(method, url, **kwargs)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;66;03m# By using the 'with' statement we are sure the session is closed, thus we\u001b[39;00m\n\u001b[1;32m 56\u001b[0m \u001b[38;5;66;03m# avoid leaving sockets open which can trigger a ResourceWarning in some\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;66;03m# cases, and look like a memory leak in others.\u001b[39;00m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m sessions\u001b[38;5;241m.\u001b[39mSession() \u001b[38;5;28;01mas\u001b[39;00m session:\n\u001b[0;32m---> 59\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43msession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
|
58 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/requests/sessions.py:589\u001b[0m, in \u001b[0;36mSession.request\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 584\u001b[0m send_kwargs \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 585\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtimeout\u001b[39m\u001b[38;5;124m\"\u001b[39m: timeout,\n\u001b[1;32m 586\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mallow_redirects\u001b[39m\u001b[38;5;124m\"\u001b[39m: allow_redirects,\n\u001b[1;32m 587\u001b[0m }\n\u001b[1;32m 588\u001b[0m send_kwargs\u001b[38;5;241m.\u001b[39mupdate(settings)\n\u001b[0;32m--> 589\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprep\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43msend_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 591\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m resp\n",
|
59 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/requests/sessions.py:703\u001b[0m, in \u001b[0;36mSession.send\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 700\u001b[0m start \u001b[38;5;241m=\u001b[39m preferred_clock()\n\u001b[1;32m 702\u001b[0m \u001b[38;5;66;03m# Send the request\u001b[39;00m\n\u001b[0;32m--> 703\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43madapter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[38;5;66;03m# Total elapsed time of the request (approximately)\u001b[39;00m\n\u001b[1;32m 706\u001b[0m elapsed \u001b[38;5;241m=\u001b[39m preferred_clock() \u001b[38;5;241m-\u001b[39m start\n",
|
60 |
+
"File \u001b[0;32m~/anaconda3/envs/scrapper/lib/python3.10/site-packages/requests/adapters.py:519\u001b[0m, in \u001b[0;36mHTTPAdapter.send\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 515\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(e\u001b[38;5;241m.\u001b[39mreason, _SSLError):\n\u001b[1;32m 516\u001b[0m \u001b[38;5;66;03m# This branch is for urllib3 v1.22 and later.\u001b[39;00m\n\u001b[1;32m 517\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m SSLError(e, request\u001b[38;5;241m=\u001b[39mrequest)\n\u001b[0;32m--> 519\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mConnectionError\u001b[39;00m(e, request\u001b[38;5;241m=\u001b[39mrequest)\n\u001b[1;32m 521\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ClosedPoolError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 522\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mConnectionError\u001b[39;00m(e, request\u001b[38;5;241m=\u001b[39mrequest)\n",
|
61 |
+
"\u001b[0;31mConnectionError\u001b[0m: HTTPConnectionPool(host='localhost', port=8000): Max retries exceeded with url: /product (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x704b7591fbb0>: Failed to establish a new connection: [Errno 111] Connection refused'))"
|
62 |
+
]
|
63 |
+
}
|
64 |
+
],
|
65 |
+
"source": [
|
66 |
+
"import requests\n",
|
67 |
+
"import json\n",
|
68 |
+
"\n",
|
69 |
+
"import requests\n",
|
70 |
+
"import json\n",
|
71 |
+
"\n",
|
72 |
+
"url = \"http://localhost:8000/product\"\n",
|
73 |
+
"payload = {\n",
|
74 |
+
" \"product\": \"carro\"\n",
|
75 |
+
"}\n",
|
76 |
+
"headers = {'Content-Type': 'application/json'}\n",
|
77 |
+
"\n",
|
78 |
+
"response = requests.post(url, data=json.dumps(payload), headers=headers)\n",
|
79 |
+
"\n",
|
80 |
+
"print(response.status_code)\n",
|
81 |
+
"print(response.text)\n"
|
82 |
+
]
|
83 |
+
},
|
84 |
+
{
|
85 |
+
"cell_type": "code",
|
86 |
+
"execution_count": 36,
|
87 |
+
"metadata": {},
|
88 |
+
"outputs": [
|
89 |
+
{
|
90 |
+
"data": {
|
91 |
+
"text/plain": [
|
92 |
+
"[{'product': 'Intercomunicador Para Moto Bt12 Auriculares Casco Bluetooh',\n",
|
93 |
+
" 'price': 65900,\n",
|
94 |
+
" 'link': 'https://www.mercadolibre.com.co/intercomunicador-para-moto-bt12-auriculares-casco-bluetooh/p/MCO23892470#searchVariation=MCO23892470&position=2&search_layout=stack&type=product&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
95 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
96 |
+
" 'Kilometrage': ' +5mil vendidos',\n",
|
97 |
+
" 'Publication Date': '',\n",
|
98 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
99 |
+
" 'Pub Number': '1347811351',\n",
|
100 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
101 |
+
" {'product': 'Intercomunicador Bluetooth T-com Vb 800mts Radio Fm Moto',\n",
|
102 |
+
" 'price': 275900,\n",
|
103 |
+
" 'link': 'https://www.mercadolibre.com.co/intercomunicador-bluetooth-t-com-vb-800mts-radio-fm-moto/p/MCO26661439#searchVariation=MCO26661439&position=3&search_layout=stack&type=product&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
104 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
105 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
106 |
+
" 'Publication Date': '',\n",
|
107 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
108 |
+
" 'Pub Number': '1333100671',\n",
|
109 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
110 |
+
" {'product': 'Hidrolavadora Inalambrica Portátil Recargable 48v Carro Moto',\n",
|
111 |
+
" 'price': 224900,\n",
|
112 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1084135327-hidrolavadora-inalambrica-portatil-recargable-48v-carro-moto-_JM#position=8&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
113 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
114 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
115 |
+
" 'Publication Date': '',\n",
|
116 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
117 |
+
" 'Pub Number': '1084135327',\n",
|
118 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
119 |
+
" {'product': 'Llanta trasero para moto Pirelli Diablo Rosso III sin cámara de 140/70R17 H 66 x 1 unidad',\n",
|
120 |
+
" 'price': 528471,\n",
|
121 |
+
" 'link': 'https://www.mercadolibre.com.co/llanta-trasero-para-moto-pirelli-diablo-rosso-iii-sin-camara-de-14070r17-h-66-x-1-unidad/p/MCO17410101#searchVariation=MCO17410101&position=4&search_layout=stack&type=product&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
122 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
123 |
+
" 'Kilometrage': ' +500 vendidos',\n",
|
124 |
+
" 'Publication Date': '',\n",
|
125 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
126 |
+
" 'Pub Number': '1271930659',\n",
|
127 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
128 |
+
" {'product': 'Hidrolavadora Inalambrica Portátil Recargable 48v 2 Baterías',\n",
|
129 |
+
" 'price': 249900,\n",
|
130 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1283536390-hidrolavadora-inalambrica-portatil-recargable-48v-2-baterias-_JM#position=11&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
131 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
132 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
133 |
+
" 'Publication Date': '',\n",
|
134 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
135 |
+
" 'Pub Number': '1283536390',\n",
|
136 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
137 |
+
" {'product': 'Carpa Capa Adulto Impermeable Lluvia Eva Botones Color',\n",
|
138 |
+
" 'price': 13490,\n",
|
139 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-548445426-carpa-capa-adulto-impermeable-lluvia-eva-botones-color-_JM#position=12&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
140 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
141 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
142 |
+
" 'Publication Date': '',\n",
|
143 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
144 |
+
" 'Pub Number': '548445426',\n",
|
145 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
146 |
+
" {'product': 'Funda Silicona Impermeable Protector Zapato Lluvia Antidesli',\n",
|
147 |
+
" 'price': 14900,\n",
|
148 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-578271575-funda-silicona-impermeable-protector-zapato-lluvia-antidesli-_JM#position=13&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
149 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
150 |
+
" 'Kilometrage': ' +5mil vendidos',\n",
|
151 |
+
" 'Publication Date': '',\n",
|
152 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
153 |
+
" 'Pub Number': '578271575',\n",
|
154 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
155 |
+
" {'product': 'Hidrolavadora Inalambrica Portátil Recargable 48v 2 Baterías',\n",
|
156 |
+
" 'price': 249900,\n",
|
157 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1267505191-hidrolavadora-inalambrica-portatil-recargable-48v-2-baterias-_JM#position=14&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
158 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
159 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
160 |
+
" 'Publication Date': '',\n",
|
161 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
162 |
+
" 'Pub Number': '1267505191',\n",
|
163 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
164 |
+
" {'product': 'Moto Carro Electrica Niño Usb Sd Mp3 Recargable Luces X-168',\n",
|
165 |
+
" 'price': 424900,\n",
|
166 |
+
" 'link': 'https://click1.mercadolibre.com.co/mclics/clicks/external/MCO/count?a=aD03o0BPQZFQBxmAkkRhW6OMcxslqeWsngDTObXOxM%2B%2FGgJtgPIAk7bzCDKbfbmni4y6HRLeORHZ1iQFk%2F9T2gbr7xetvPgJXXv3YLkZKMNqelwM7%2FcpRCMVKpABHWjqKCdAhLVAj4qjrQjSo2zm23t3L8SITqTHaQmaY7wYYDeh1JifSxxilWwxvZoKdgRScuSfiVPF2I%2F%2BozIhoGlGR2l0xPaQsXdVy2PJL5l6i%2BeewVEElC6CiFDrGcqosEQd%2B%2FmXNy%2Fs3dwS4iziULncWKo6bvSmEUfQShgmiidLDKI2AM%2B6PfJmuorBo1pDLyxEd1kxqLAekpfoRWadhTXnl%2B7Upzovgkm2SNM7K%2BKrS28rzN%2FBNcwp2a8xEO%2FItzmEGARi2A9Rxmz4hIkg%2BP5P6PWHPUl8qFRMl3OIAya7iMSyx5%2FPch9RCc8G4mksQGnXt3kg2q5lWGH2s4O%2BJrx14Y%2Fx2u8tkLqEc%2BJ%2FK60fItT95PG1iucARF5dKLyVy%2FIuucNLC8B%2F8mTDkrf845MW0EzCTSln0rq%2FcNq1hVEbtDaGXLseLlwg4nk6172jj247eq%2BttpsRJhE18evjat0AGUfCo9%2BmIDs8ZOMnYPfFmonzPwKtRObV9mU4kkT1c8gCFZ0sVjW%2F7SYoKWiNUb3u1SzHRRVjlBIrzxX%2Bie6%2B5FP7DKBdQAa79Mxur2Goqf0aH9Z7yB2E7WaLLt9WTlTE%2BFt3Rhkp&e=mclics%2Fpseudo-search-pads-buybox%2B7708%2Cmclics%2Fbuybox-layout%2B25349%2Cmclics%2Fdifferential-cvr-factor%2B29495%2Cmclics%2Fsearch-list-ad-algorithm%2B16026&rb=x',\n",
|
167 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
168 |
+
" 'Kilometrage': ' +100 vendidos',\n",
|
169 |
+
" 'Publication Date': '',\n",
|
170 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
171 |
+
" 'Pub Number': '596224201',\n",
|
172 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
173 |
+
" {'product': 'Impermeable Siliconado Para Motociclista',\n",
|
174 |
+
" 'price': 61300,\n",
|
175 |
+
" 'link': 'https://click1.mercadolibre.com.co/mclics/clicks/external/MCO/count?a=XSykzmtjmwMCXwsVBg4n1z4Uiy%2BDhWq79i%2B7erMqSahvO875of4mAuk6I5aApVfYmtl6pJ4AUSdDDBZEHeM4WfvV6UaeHTLhzt4jKE5R7egUE0sPe0do82Q4ymOinQqSmkVHDZfMPnJVE1eEFa%2FjHKlMql5J0OzqaBDGzY1Ur9J92%2FiIKm3b1cFloBCksR8CsX4n8T%2FzUt8lo8DXQ3xAzhOn4Pn4Uro4gwqiwi8kYkyKYDQ45C03%2FaOf%2B2PQLwEEFnf1Lwi09m44c0XexFSehNgF9XEGEn1EKwMxiKCltYW1T8UTO9l9kTWNEEdoMBLYFZ2iLcjJKbwkUksPincbRC99pYd%2FfzYEzGZU1NS51zc4pJMvCkXuIU8twrZwkB9qdLt0s%2FBhjdgInDavKn4Dd7qDIKmd3p0zNhDybADDJTZbM%2BrbHAjITPouf1pR%2FvtfumzqCyKCosfGA9lTnDjkbpsYXZbRTDKmXzc%2Fqq4zziT5nsS8PXOYmEwk5nia5cK1RpPdPuz9GvD%2Biqh1%2FHxvzzWExnS5U2qchvBPqF05rRmA0bs4ZYWdIgV3LeZfY4llQ5crkTkEFb72DaB%2Bn4PcT6eRjj%2F5YARKV3vCa4nPGDsRcHLnOQJ%2FnJkHvLbQ0p5y09phVEUuQPrMSwyFljrR6wPfskFlkgNEgLMV9FtTvSJlDe378JpC7iVIdAos15r9oi3OY5w%3D&e=mclics%2Fpseudo-search-pads-buybox%2B7708%2Cmclics%2Fbuybox-layout%2B25349%2Cmclics%2Fdifferential-cvr-factor%2B29495%2Cmclics%2Fsearch-list-ad-algorithm%2B16026&rb=x',\n",
|
176 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
177 |
+
" 'Kilometrage': ' +5mil vendidos',\n",
|
178 |
+
" 'Publication Date': '',\n",
|
179 |
+
" 'Location': '',\n",
|
180 |
+
" 'Pub Number': '624337760',\n",
|
181 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
182 |
+
" {'product': 'Caballete Moto, Burro, Gato, Stand, Soporte Moto',\n",
|
183 |
+
" 'price': 118999,\n",
|
184 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1198407002-caballete-moto-burro-gato-stand-soporte-moto-_JM#position=15&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
185 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
186 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
187 |
+
" 'Publication Date': '',\n",
|
188 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
189 |
+
" 'Pub Number': '1198407002',\n",
|
190 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
191 |
+
" {'product': 'Botas Lluvia Impermeables Zapatos Protectores Blz01',\n",
|
192 |
+
" 'price': 26900,\n",
|
193 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-876810603-botas-lluvia-impermeables-zapatos-protectores-blz01-_JM#position=16&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
194 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
195 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
196 |
+
" 'Publication Date': '',\n",
|
197 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
198 |
+
" 'Pub Number': '876810603',\n",
|
199 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
200 |
+
" {'product': 'Impermeable Siliconado Para Motociclista',\n",
|
201 |
+
" 'price': 61300,\n",
|
202 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-624337760-impermeable-siliconado-para-motociclista-_JM#position=17&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
203 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
204 |
+
" 'Kilometrage': ' +5mil vendidos',\n",
|
205 |
+
" 'Publication Date': '',\n",
|
206 |
+
" 'Location': '',\n",
|
207 |
+
" 'Pub Number': '624337760',\n",
|
208 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
209 |
+
" {'product': 'Carcasa Con Carga Inalámbrica Magsafe Transparente Para Apple iPhone',\n",
|
210 |
+
" 'price': 19495,\n",
|
211 |
+
" 'link': 'https://www.mercadolibre.com.co/carcasa-con-carga-inalambrica-magsafe-transparente-para-apple-iphone/p/MCO24541445#searchVariation=MCO24541445&position=5&search_layout=stack&type=product&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
212 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
213 |
+
" 'Kilometrage': ' +100 vendidos',\n",
|
214 |
+
" 'Publication Date': '',\n",
|
215 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
216 |
+
" 'Pub Number': '1960481730',\n",
|
217 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
218 |
+
" {'product': 'Guantes Moto Termicos Con Proteccion En Nudillos Y Tactiles ',\n",
|
219 |
+
" 'price': 54000,\n",
|
220 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-562384439-guantes-moto-termicos-con-proteccion-en-nudillos-y-tactiles-_JM#position=18&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
221 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
222 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
223 |
+
" 'Publication Date': '',\n",
|
224 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
225 |
+
" 'Pub Number': '562384439',\n",
|
226 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
227 |
+
" {'product': 'Candado Cadena Gw Seguridad Bicicleta Llave Guaya',\n",
|
228 |
+
" 'price': 30990,\n",
|
229 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-836646390-candado-cadena-gw-seguridad-bicicleta-llave-guaya-_JM#position=21&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
230 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
231 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
232 |
+
" 'Publication Date': '',\n",
|
233 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
234 |
+
" 'Pub Number': '836646390',\n",
|
235 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
236 |
+
" {'product': 'Llanta delantero para moto Pirelli Enduro Street MT 60 con cámara de 90/90-19 P 52 x 1 unidad',\n",
|
237 |
+
" 'price': 265990,\n",
|
238 |
+
" 'link': 'https://www.mercadolibre.com.co/llanta-delantero-para-moto-pirelli-enduro-street-mt-60-con-camara-de-9090-19-p-52-x-1-unidad/p/MCO15900156#searchVariation=MCO15900156&position=6&search_layout=stack&type=product&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
239 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
240 |
+
" 'Kilometrage': ' +100 vendidos',\n",
|
241 |
+
" 'Publication Date': '',\n",
|
242 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
243 |
+
" 'Pub Number': '861863191',\n",
|
244 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
245 |
+
" {'product': 'Maletero Spartan 45lt Espaldar Tipo Shad Givi No Aluminio',\n",
|
246 |
+
" 'price': 506500,\n",
|
247 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1198424553-maletero-spartan-45lt-espaldar-tipo-shad-givi-no-aluminio-_JM#position=22&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
248 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
249 |
+
" 'Kilometrage': ' +100 vendidos',\n",
|
250 |
+
" 'Publication Date': '',\n",
|
251 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
252 |
+
" 'Pub Number': '1198424553',\n",
|
253 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
254 |
+
" {'product': 'Moto Eléctrica Montable Para Niños N Max 1-6 Años',\n",
|
255 |
+
" 'price': 690000,\n",
|
256 |
+
" 'link': 'https://click1.mercadolibre.com.co/mclics/clicks/external/MCO/count?a=iTODBtAc4mIaKg2h1MVKqXrOvNnuJ5EujRJJ51C6VYcf40YGqPGT%2F65qXA83%2FGsmRDZnMLbOLfHdGG2xZfxUR0OaldaMrAoiZ5HPPU29DQTRSbJzp7jiUYmzlEMryT6ACw6W2ZrVUGaQRH9l%2FKXt6g8iooYkRSorfjJC7AKPuWRQ936O6tRJ9vN8HAyZJwpYcm8LzEUL4VevThYewzNjSEGAY4A%2FwXMKbiRmzlhtKEf9bcDqnk2XPV%2BlYz%2F%2FHlMLqtHlYg%2B%2FZL8S9TB%2FHyfPgaym5ZDAdU7ZLdcipens5gH919xEeM9xtrD0ch3UIzEZ06L4iW%2FC%2FH1TDWd3ATnhCntujMvxk9%2Fe5Vna1zfKz4CzWFLiqHfp4fU3gTv7eriYOtZ0qshxsiFN0qW9JtlkrsQLZqwmhOfW1znxjdmnGEJzB05xN5F%2FVBWmBIfkJoQHTD8s%2F6IJZOZL63jw%2FUMRLahPSbdO7ZYK%2BymyFmcgB5v6O5BTn2e%2BCpZRjmyS2nk4owWB37aGWrwD6HQgKuS08WNuYjeYn65wc3NPgSOr8I%2FeGx77BcZECjc0Bk2fQ3JTBpb5dfH10sS1O6q%2BnVW%2BfuoeUvxsVMirYz6sJ%2BBIdi4XI6Mjqo0bzftlADu2FrkzFr5oIpc0jIyY1kMMAZUMGUWcGu2E6bAEke0me4lfw7Kpvk%2F28cROJ2MoiXafOHZZLpXQ%2FTclV7TueqvU&e=mclics%2Fpseudo-search-pads-buybox%2B7708%2Cmclics%2Fbuybox-layout%2B25349%2Cmclics%2Fdifferential-cvr-factor%2B29495%2Cmclics%2Fsearch-list-ad-algorithm%2B16026&rb=x',\n",
|
257 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
258 |
+
" 'Kilometrage': ' +5 vendidos',\n",
|
259 |
+
" 'Publication Date': '',\n",
|
260 |
+
" 'Location': '',\n",
|
261 |
+
" 'Pub Number': '973976876',\n",
|
262 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
263 |
+
" {'product': 'Iniciador De Batería Carro Portatil Reiniciador Auto Moto',\n",
|
264 |
+
" 'price': 180000,\n",
|
265 |
+
" 'link': 'https://click1.mercadolibre.com.co/mclics/clicks/external/MCO/count?a=7%2F%2Fk9dvcnXrzDcT6vNZZGIzusNa36A%2FHGpz%2FRe7HXq3PCf3Nrv%2BVmMwdEF9EEKLDzfQMpWjJaYwEwnDRDmAGfPO%2BYCfR7j4kTl%2Bzu%2BR15wBZnGvzzfgx%2F%2FaGcuje0Qikb1A16goRd%2FJMxdXJSAMx8fVtqVQrCRCQdex%2BdkT%2BREnShUPO6KfKBfVEvhaUw%2FQ6HemtXRHcrLLHX55Hob%2B6tF5WaqOla0Cdsn7etC67Ag0FAHbFgoQEevLpEd2EDlTJHtFNaDDncj9x3XpmPR1MvJ%2F3NIsTb3xVjkF5E4AcovKz0TazPTLlv3kOx2wR4VR%2FmYSaMjR6K13IVwOVwh3Tfk6qhmYY5fiRM6gVvx24%2FtxtphNvGmVpV9EaFD%2B0GRksvP3Bssj1G5xos3SVqWY9PlxFA%2Fu4mfWwuH%2BHDdh0HB8Ympl1xcMaLrPd53HQ3lSjpZ3F1mXtQEHDQvU7VoZjjWvrJj5JdUzC0sFBZWc0atctL2ADY3pqrruxsZv8APk0oyJlEjNIL%2FgD3yvYVXEtNxx3NNftOqFOyxJyMnH8q2JWXRZonTiVDOSBF%2B5lScN3bJxBBc0QS2ydhoN3tvC9%2BUsLXdM36XIjifzChNA7WVcDkosLdid0MtlcSQelXOeGSO9LL5xwZcIN0AwZEhIcjImZ1mA%2FnHGNOfRYshuTTpNLWlHU4MKGaWd9USFfiC1ZPIV3ufEf12W8shOZn3hHLABQOg6iUYA%3D&e=mclics%2Fpseudo-search-pads-buybox%2B7708%2Cmclics%2Fbuybox-layout%2B25349%2Cmclics%2Fdifferential-cvr-factor%2B29495%2Cmclics%2Fsearch-list-ad-algorithm%2B16026&rb=x',\n",
|
266 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
267 |
+
" 'Kilometrage': ' +25 vendidos',\n",
|
268 |
+
" 'Publication Date': '',\n",
|
269 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
270 |
+
" 'Pub Number': '2063331806',\n",
|
271 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
272 |
+
" {'product': 'Intercomunicador 6 Pilotos 1200 Mt Manos Libres V6 Pro 850ma Color Negro',\n",
|
273 |
+
" 'price': 189900,\n",
|
274 |
+
" 'link': 'https://www.mercadolibre.com.co/intercomunicador-6-pilotos-1200-mt-manos-libres-v6-pro-850ma-color-negro/p/MCO24598236#searchVariation=MCO24598236&position=7&search_layout=stack&type=product&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
275 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
276 |
+
" 'Kilometrage': ' +25 vendidos',\n",
|
277 |
+
" 'Publication Date': '',\n",
|
278 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
279 |
+
" 'Pub Number': '2156400806',\n",
|
280 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
281 |
+
" {'product': 'Guantes 100% Cuero Para Moto Con Protecciones Y Térmicos',\n",
|
282 |
+
" 'price': 70000,\n",
|
283 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-489623857-guantes-100-cuero-para-moto-con-protecciones-y-termicos-_JM#position=23&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
284 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
285 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
286 |
+
" 'Publication Date': '',\n",
|
287 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
288 |
+
" 'Pub Number': '489623857',\n",
|
289 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
290 |
+
" {'product': 'Pijama Moto Semi-impermeable + Forro Para Maletín Reflectivo',\n",
|
291 |
+
" 'price': 49900,\n",
|
292 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-908325300-pijama-moto-semi-impermeable-forro-para-maletin-reflectivo-_JM#position=24&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
293 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
294 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
295 |
+
" 'Publication Date': '',\n",
|
296 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
297 |
+
" 'Pub Number': '908325300',\n",
|
298 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
299 |
+
" {'product': 'Impermeable Siliconado Para Motociclista 4 Piezas',\n",
|
300 |
+
" 'price': 65000,\n",
|
301 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-632843532-impermeable-siliconado-para-motociclista-4-piezas-_JM#position=25&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
302 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
303 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
304 |
+
" 'Publication Date': '',\n",
|
305 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
306 |
+
" 'Pub Number': '632843532',\n",
|
307 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
308 |
+
" {'product': 'Ski Mask Pasamontañas Balaclava 3 Huecos Colores ',\n",
|
309 |
+
" 'price': 24990,\n",
|
310 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-630969856-ski-mask-pasamontanas-balaclava-3-huecos-colores-_JM#position=26&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
311 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
312 |
+
" 'Kilometrage': ' +500 vendidos',\n",
|
313 |
+
" 'Publication Date': '',\n",
|
314 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
315 |
+
" 'Pub Number': '630969856',\n",
|
316 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
317 |
+
" {'product': 'Soporte De Metal Para Casco Moto Multifuncional Pared Tv59',\n",
|
318 |
+
" 'price': 15900,\n",
|
319 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1345717709-soporte-de-metal-para-casco-moto-multifuncional-pared-tv59-_JM#position=27&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
320 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
321 |
+
" 'Kilometrage': ' +100 vendidos',\n",
|
322 |
+
" 'Publication Date': '',\n",
|
323 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
324 |
+
" 'Pub Number': '1345717709',\n",
|
325 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
326 |
+
" {'product': 'Guantes City Táctiles Térmicos Con Reflectivo Moto Bici',\n",
|
327 |
+
" 'price': 49900,\n",
|
328 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-847052153-guantes-city-tactiles-termicos-con-reflectivo-moto-bici-_JM#position=28&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
329 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
330 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
331 |
+
" 'Publication Date': '',\n",
|
332 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
333 |
+
" 'Pub Number': '847052153',\n",
|
334 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
335 |
+
" {'product': 'Llanta 130/70-13 Diablo Rosso Scooter Pirelli Tl-nmax -black',\n",
|
336 |
+
" 'price': 259990,\n",
|
337 |
+
" 'link': 'https://www.mercadolibre.com.co/llanta-13070-13-diablo-rosso-scooter-pirelli-tl-nmax-black/p/MCO26512152#searchVariation=MCO26512152&position=1&search_layout=stack&type=product&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
338 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
339 |
+
" 'Kilometrage': ' +50 vendidos',\n",
|
340 |
+
" 'Publication Date': '',\n",
|
341 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
342 |
+
" 'Pub Number': '1990395460',\n",
|
343 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
344 |
+
" {'product': 'Kit Rodilleras + Coderas De Proteccion Moto + Envio',\n",
|
345 |
+
" 'price': 95000,\n",
|
346 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-563154962-kit-rodilleras-coderas-de-proteccion-moto-envio-_JM#position=29&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
347 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
348 |
+
" 'Kilometrage': ' +500 vendidos',\n",
|
349 |
+
" 'Publication Date': '',\n",
|
350 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
351 |
+
" 'Pub Number': '563154962',\n",
|
352 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
353 |
+
" {'product': 'Capa De Lluvia Eva Impermeable Adulto Chaqueta Transparente',\n",
|
354 |
+
" 'price': 14900,\n",
|
355 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1439298590-capa-de-lluvia-eva-impermeable-adulto-chaqueta-transparente-_JM#position=30&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
356 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
357 |
+
" 'Kilometrage': ' +500 vendidos',\n",
|
358 |
+
" 'Publication Date': '',\n",
|
359 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
360 |
+
" 'Pub Number': '1439298590',\n",
|
361 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
362 |
+
" {'product': 'Base Soporte Para Casco Chaqueta De Moto Metal',\n",
|
363 |
+
" 'price': 20990,\n",
|
364 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-572822893-base-soporte-para-casco-chaqueta-de-moto-metal-_JM#position=31&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
365 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
366 |
+
" 'Kilometrage': ' +500 vendidos',\n",
|
367 |
+
" 'Publication Date': '',\n",
|
368 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
369 |
+
" 'Pub Number': '572822893',\n",
|
370 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
371 |
+
" {'product': 'Guantes Icon Pursuit En Cuero Moto Protección Unisex',\n",
|
372 |
+
" 'price': 99900,\n",
|
373 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-614556117-guantes-icon-pursuit-en-cuero-moto-proteccion-unisex-_JM#position=32&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
374 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
375 |
+
" 'Kilometrage': ' +100 vendidos',\n",
|
376 |
+
" 'Publication Date': '',\n",
|
377 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
378 |
+
" 'Pub Number': '614556117',\n",
|
379 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
380 |
+
" {'product': 'Par Bombillos Luz Led Moto O Carro H4 Alta/baja/exploradora',\n",
|
381 |
+
" 'price': 150000,\n",
|
382 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-866542962-par-bombillos-luz-led-moto-o-carro-h4-altabajaexploradora-_JM#position=33&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
383 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
384 |
+
" 'Kilometrage': ' +500 vendidos',\n",
|
385 |
+
" 'Publication Date': '',\n",
|
386 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
387 |
+
" 'Pub Number': '866542962',\n",
|
388 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
389 |
+
" {'product': 'Espejos Cafe Racer Semi Ovalados',\n",
|
390 |
+
" 'price': 50000,\n",
|
391 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-552862329-espejos-cafe-racer-semi-ovalados-_JM#position=34&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
392 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
393 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
394 |
+
" 'Publication Date': '',\n",
|
395 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
396 |
+
" 'Pub Number': '552862329',\n",
|
397 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
398 |
+
" {'product': 'Maleteros Tomcat 50lts Litros Tipo Shad Givi Envio Gratis',\n",
|
399 |
+
" 'price': 378500,\n",
|
400 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-556641635-maleteros-tomcat-50lts-litros-tipo-shad-givi-envio-gratis-_JM#position=35&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
401 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
402 |
+
" 'Kilometrage': ' +100 vendidos',\n",
|
403 |
+
" 'Publication Date': '',\n",
|
404 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
405 |
+
" 'Pub Number': '556641635',\n",
|
406 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
407 |
+
" {'product': 'Impermeable Moto 4 Piezas Cal18 Original Sdc 2 Obsequios.',\n",
|
408 |
+
" 'price': 69900,\n",
|
409 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-452039633-impermeable-moto-4-piezas-cal18-original-sdc-2-obsequios-_JM#position=36&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
410 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
411 |
+
" 'Kilometrage': ' +5mil vendidos',\n",
|
412 |
+
" 'Publication Date': '',\n",
|
413 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
414 |
+
" 'Pub Number': '452039633',\n",
|
415 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
416 |
+
" {'product': 'Carpa Capa Adulto Impermeable Lluvia Eva Botones Color',\n",
|
417 |
+
" 'price': 13990,\n",
|
418 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-552747451-carpa-capa-adulto-impermeable-lluvia-eva-botones-color-_JM#position=37&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
419 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
420 |
+
" 'Kilometrage': ' +500 vendidos',\n",
|
421 |
+
" 'Publication Date': '',\n",
|
422 |
+
" 'Location': '',\n",
|
423 |
+
" 'Pub Number': '552747451',\n",
|
424 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
425 |
+
" {'product': 'Pasamontañas Lycrado Balaclava Con Filtro Moto Deportes',\n",
|
426 |
+
" 'price': 19990,\n",
|
427 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-625594017-pasamontanas-lycrado-balaclava-con-filtro-moto-deportes-_JM#position=38&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
428 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
429 |
+
" 'Kilometrage': ' +100 vendidos',\n",
|
430 |
+
" 'Publication Date': '',\n",
|
431 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
432 |
+
" 'Pub Number': '625594017',\n",
|
433 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
434 |
+
" {'product': 'Navegador Moto Pantalla Táctil Android Apple Play Gps Ipx7',\n",
|
435 |
+
" 'price': 988700,\n",
|
436 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1655632694-navegador-moto-pantalla-tactil-android-apple-play-gps-ipx7-_JM#position=39&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
437 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
438 |
+
" 'Kilometrage': ' +25 vendidos',\n",
|
439 |
+
" 'Publication Date': '',\n",
|
440 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
441 |
+
" 'Pub Number': '1655632694',\n",
|
442 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
443 |
+
" {'product': 'Zapatones 100% Impermeables, Con Suela Marca Rhino ',\n",
|
444 |
+
" 'price': 38000,\n",
|
445 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-607034237-zapatones-100-impermeables-con-suela-marca-rhino-_JM#position=40&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
446 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
447 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
448 |
+
" 'Publication Date': '',\n",
|
449 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
450 |
+
" 'Pub Number': '607034237',\n",
|
451 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
452 |
+
" {'product': 'Pijama Moto Premium+ Candado Guaya Con Argolla Seguridad',\n",
|
453 |
+
" 'price': 94900,\n",
|
454 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1202925569-pijama-moto-premium-candado-guaya-con-argolla-seguridad-_JM#position=41&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
455 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
456 |
+
" 'Kilometrage': ' +100 vendidos',\n",
|
457 |
+
" 'Publication Date': '',\n",
|
458 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
459 |
+
" 'Pub Number': '1202925569',\n",
|
460 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
461 |
+
" {'product': 'Carpa Capa Adulto Impermeable Lluvia Eva Botones Color',\n",
|
462 |
+
" 'price': 18090,\n",
|
463 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-455325548-carpa-capa-adulto-impermeable-lluvia-eva-botones-color-_JM#position=42&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
464 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
465 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
466 |
+
" 'Publication Date': '',\n",
|
467 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
468 |
+
" 'Pub Number': '455325548',\n",
|
469 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
470 |
+
" {'product': 'Maletero Spartan 45 Litros (no Es Aluminio )',\n",
|
471 |
+
" 'price': 507500,\n",
|
472 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1213351757-maletero-spartan-45-litros-no-es-aluminio--_JM#position=43&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
473 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
474 |
+
" 'Kilometrage': ' +50 vendidos',\n",
|
475 |
+
" 'Publication Date': '',\n",
|
476 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
477 |
+
" 'Pub Number': '1213351757',\n",
|
478 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
479 |
+
" {'product': 'Capa Impermeable Moto Lluvia Hombre Carpa Mujer Adulto',\n",
|
480 |
+
" 'price': 19560,\n",
|
481 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-548375693-capa-impermeable-moto-lluvia-hombre-carpa-mujer-adulto-_JM#position=44&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
482 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
483 |
+
" 'Kilometrage': ' +500 vendidos',\n",
|
484 |
+
" 'Publication Date': '',\n",
|
485 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
486 |
+
" 'Pub Number': '548375693',\n",
|
487 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
488 |
+
" {'product': 'Par Exploradoras Led Rompe-niebla Moto Y Carro Alta Potencia',\n",
|
489 |
+
" 'price': 239900,\n",
|
490 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1307961173-par-exploradoras-led-rompe-niebla-moto-y-carro-alta-potencia-_JM#position=45&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
491 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
492 |
+
" 'Kilometrage': ' +100 vendidos',\n",
|
493 |
+
" 'Publication Date': '',\n",
|
494 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
495 |
+
" 'Pub Number': '1307961173',\n",
|
496 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
497 |
+
" {'product': 'Chaqueta 100% Reflectiva Y Termica Moto Hombre - Dama',\n",
|
498 |
+
" 'price': 99900,\n",
|
499 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-593252465-chaqueta-100-reflectiva-y-termica-moto-hombre-dama-_JM#position=46&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
500 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
501 |
+
" 'Kilometrage': ' +500 vendidos',\n",
|
502 |
+
" 'Publication Date': '',\n",
|
503 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
504 |
+
" 'Pub Number': '593252465',\n",
|
505 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
506 |
+
" {'product': 'Visor Para Casco Mt V-14 Revenge 2 Targo Pro Blade 2 Targo',\n",
|
507 |
+
" 'price': 99900,\n",
|
508 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1320440922-visor-para-casco-mt-v-14-revenge-2-targo-pro-blade-2-targo-_JM#position=47&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
509 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
510 |
+
" 'Kilometrage': ' +50 vendidos',\n",
|
511 |
+
" 'Publication Date': '',\n",
|
512 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
513 |
+
" 'Pub Number': '1320440922',\n",
|
514 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
515 |
+
" {'product': 'Alforjas Maletas Bolsos Laterales En Lona Viaje Nuevas Moto',\n",
|
516 |
+
" 'price': 175000,\n",
|
517 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1032578589-alforjas-maletas-bolsos-laterales-en-lona-viaje-nuevas-moto-_JM#position=48&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
518 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
519 |
+
" 'Kilometrage': ' +100 vendidos',\n",
|
520 |
+
" 'Publication Date': '',\n",
|
521 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
522 |
+
" 'Pub Number': '1032578589',\n",
|
523 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
524 |
+
" {'product': 'Hidrolavadora Inalambrica Portátil Recargable 48v Carro Moto',\n",
|
525 |
+
" 'price': 224900,\n",
|
526 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1084100492-hidrolavadora-inalambrica-portatil-recargable-48v-carro-moto-_JM#position=49&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
527 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
528 |
+
" 'Kilometrage': ' +100 vendidos',\n",
|
529 |
+
" 'Publication Date': '',\n",
|
530 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
531 |
+
" 'Pub Number': '1084100492',\n",
|
532 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
533 |
+
" {'product': 'Acelerador De Cuarta Rizoma +manillares Protaper',\n",
|
534 |
+
" 'price': 56000,\n",
|
535 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-569126901-acelerador-de-cuarta-rizoma-manillares-protaper-_JM#position=50&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
536 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
537 |
+
" 'Kilometrage': ' +500 vendidos',\n",
|
538 |
+
" 'Publication Date': '',\n",
|
539 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
540 |
+
" 'Pub Number': '569126901',\n",
|
541 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
542 |
+
" {'product': 'Guantes De Moto En Cuero Transpirables Protección Carbono ',\n",
|
543 |
+
" 'price': 169900,\n",
|
544 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1311518845-guantes-de-moto-en-cuero-transpirables-proteccion-carbono-_JM#position=51&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
545 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
546 |
+
" 'Kilometrage': ' +50 vendidos',\n",
|
547 |
+
" 'Publication Date': '',\n",
|
548 |
+
" 'Location': '',\n",
|
549 |
+
" 'Pub Number': '1311518845',\n",
|
550 |
+
" 'Created At': '2024-01-16 21:40:46'}},\n",
|
551 |
+
" {'product': 'Compresimetro Para Motores A Gasolina Ideal Autos Y Motos',\n",
|
552 |
+
" 'price': 90000,\n",
|
553 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1658588074-compresimetro-para-motores-a-gasolina-ideal-autos-y-motos-_JM#position=52&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
554 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
555 |
+
" 'Kilometrage': ' +50 vendidos',\n",
|
556 |
+
" 'Publication Date': '',\n",
|
557 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
558 |
+
" 'Pub Number': '1658588074',\n",
|
559 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
560 |
+
" {'product': 'Botas Impermeables Dakar Lluvia Invierno Para Motociclistas',\n",
|
561 |
+
" 'price': 59000,\n",
|
562 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-612832773-botas-impermeables-dakar-lluvia-invierno-para-motociclistas-_JM#position=53&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
563 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
564 |
+
" 'Kilometrage': ' +1000 vendidos',\n",
|
565 |
+
" 'Publication Date': '',\n",
|
566 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
567 |
+
" 'Pub Number': '612832773',\n",
|
568 |
+
" 'Created At': '2024-01-16 21:40:45'}},\n",
|
569 |
+
" {'product': 'Zapatón Impermeable Siliconado Tipo Botín Funda Para Zapatos',\n",
|
570 |
+
" 'price': 36000,\n",
|
571 |
+
" 'link': 'https://articulo.mercadolibre.com.co/MCO-1073571585-zapaton-impermeable-siliconado-tipo-botin-funda-para-zapatos-_JM#position=54&search_layout=stack&type=item&tracking_id=72d6401d-2868-4046-8ae9-cc0a091c474c',\n",
|
572 |
+
" \"product='moto'_info\": {'Year': 'Nuevo ',\n",
|
573 |
+
" 'Kilometrage': ' +100 vendidos',\n",
|
574 |
+
" 'Publication Date': '',\n",
|
575 |
+
" 'Location': '¡Es uno de los mejores del sitio!',\n",
|
576 |
+
" 'Pub Number': '1073571585',\n",
|
577 |
+
" 'Created At': '2024-01-16 21:40:46'}}]"
|
578 |
+
]
|
579 |
+
},
|
580 |
+
"execution_count": 36,
|
581 |
+
"metadata": {},
|
582 |
+
"output_type": "execute_result"
|
583 |
+
}
|
584 |
+
],
|
585 |
+
"source": [
|
586 |
+
"response.json()"
|
587 |
+
]
|
588 |
+
},
|
589 |
+
{
|
590 |
+
"cell_type": "code",
|
591 |
+
"execution_count": 18,
|
592 |
+
"metadata": {},
|
593 |
+
"outputs": [],
|
594 |
+
"source": [
|
595 |
+
"data = \"\"\"\n",
|
596 |
+
"[{\"carro\": \"Renault Duster 1.6 Dynamique Gt 4x2\", \"price\": 47500000, \"link\": \"https://carro.mercadolibre.com.co/MCO-2151389978-renault-duster-16-dynamique-gt-_JM#position=1&search_layout=grid&type=item&tracking_id=d8d20af2-17b4-4628-a86c-b0634ab24b90\", \"carro_info\": {\"Year\": \"2015\", \"Kilometrage\": \"75300 \", \"Publication Date\": \"Publicado hace 1 d\\u00eda\", \"Location\": \"La Colina Campestre - Suba - Bogot\\u00e1 D.C.\", \"Pub Number\": \"2151389978\", \"Created At\": \"2024-01-14 15:19:57\"}}, ...]\n",
|
597 |
+
"\"\"\""
|
598 |
+
]
|
599 |
+
},
|
600 |
+
{
|
601 |
+
"cell_type": "code",
|
602 |
+
"execution_count": 20,
|
603 |
+
"metadata": {},
|
604 |
+
"outputs": [
|
605 |
+
{
|
606 |
+
"data": {
|
607 |
+
"text/plain": [
|
608 |
+
"'\"\\\\n[{\\\\\"carro\\\\\": \\\\\"Renault Duster 1.6 Dynamique Gt 4x2\\\\\", \\\\\"price\\\\\": 47500000, \\\\\"link\\\\\": \\\\\"https://carro.mercadolibre.com.co/MCO-2151389978-renault-duster-16-dynamique-gt-_JM#position=1&search_layout=grid&type=item&tracking_id=d8d20af2-17b4-4628-a86c-b0634ab24b90\\\\\", \\\\\"carro_info\\\\\": {\\\\\"Year\\\\\": \\\\\"2015\\\\\", \\\\\"Kilometrage\\\\\": \\\\\"75300 \\\\\", \\\\\"Publication Date\\\\\": \\\\\"Publicado hace 1 d\\\\u00eda\\\\\", \\\\\"Location\\\\\": \\\\\"La Colina Campestre - Suba - Bogot\\\\u00e1 D.C.\\\\\", \\\\\"Pub Number\\\\\": \\\\\"2151389978\\\\\", \\\\\"Created At\\\\\": \\\\\"2024-01-14 15:19:57\\\\\"}}, ...]\\\\n\"'"
|
609 |
+
]
|
610 |
+
},
|
611 |
+
"execution_count": 20,
|
612 |
+
"metadata": {},
|
613 |
+
"output_type": "execute_result"
|
614 |
+
}
|
615 |
+
],
|
616 |
+
"source": [
|
617 |
+
"json.dumps(data)"
|
618 |
+
]
|
619 |
+
},
|
620 |
+
{
|
621 |
+
"cell_type": "code",
|
622 |
+
"execution_count": 17,
|
623 |
+
"metadata": {},
|
624 |
+
"outputs": [
|
625 |
+
{
|
626 |
+
"data": {
|
627 |
+
"text/plain": [
|
628 |
+
"'Internal Server Error'"
|
629 |
+
]
|
630 |
+
},
|
631 |
+
"execution_count": 17,
|
632 |
+
"metadata": {},
|
633 |
+
"output_type": "execute_result"
|
634 |
+
}
|
635 |
+
],
|
636 |
+
"source": [
|
637 |
+
"response.text"
|
638 |
]
|
639 |
},
|
640 |
{
|