diff --git a/PROYECTO2_Gilda.ipynb b/PROYECTO2_Gilda.ipynb new file mode 100644 index 0000000..bfb5e27 --- /dev/null +++ b/PROYECTO2_Gilda.ipynb @@ -0,0 +1,222 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 110, + "id": "f2ebe4b0", + "metadata": {}, + "outputs": [], + "source": [ + "import selenium\n", + "from bs4 import BeautifulSoup" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "id": "07c4c939-b469-415a-9a7a-b5f6721393f6", + "metadata": {}, + "outputs": [], + "source": [ + "from selenium import webdriver\n", + "from selenium.webdriver.common.by import By\n", + "from selenium.webdriver.common.keys import Keys\n", + "from selenium.webdriver.common.action_chains import ActionChains" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "id": "c18d0af7-bb88-4a20-9710-fef60d0aab7a", + "metadata": {}, + "outputs": [], + "source": [ + "url = 'https://www.electrocosto.com/televisores/'" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "id": "47c266e3-3883-4a60-981c-7316f8770275", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\Toshiba Satellite\\AppData\\Local\\Temp\\ipykernel_11020\\559913129.py:1: DeprecationWarning: executable_path has been deprecated, please pass in a Service object\n", + " driver = webdriver.Chrome('C:\\Driver\\chromedriver')\n" + ] + } + ], + "source": [ + "driver = webdriver.Chrome('C:\\Driver\\chromedriver')" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "id": "cddacfe0-33af-422a-8c85-7c46f3c8d78b", + "metadata": {}, + "outputs": [], + "source": [ + "driver.maximize_window()" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "id": "6e081e9a-6d8c-4508-9349-84894e28519f", + "metadata": {}, + "outputs": [], + "source": [ + "driver.get(url)" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "id": "c520d561-2e40-4e3a-8c2c-c78e05dbc8a7", + "metadata": {}, + "outputs": [], + "source": [ + "soup = BeautifulSoup(driver.page_source)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "341671ea-b9e0-4abf-84d4-41adca74576a", + "metadata": {}, + "outputs": [], + "source": [ + "soup.select('button[name=\"bluecoreCloseButton\"]')" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "id": "2cc932a9-f8b5-40e6-a6bd-6ffa22f0d079", + "metadata": {}, + "outputs": [ + { + "ename": "InvalidArgumentException", + "evalue": "Message: invalid argument: invalid locator\n (Session info: chrome=107.0.5304.122)\nStacktrace:\nBacktrace:\n\tOrdinal0 [0x0031ACD3+2075859]\n\tOrdinal0 [0x002AEE61+1633889]\n\tOrdinal0 [0x001AB7BD+571325]\n\tOrdinal0 [0x001DA745+763717]\n\tOrdinal0 [0x001DAE1B+765467]\n\tOrdinal0 [0x0020D0F2+970994]\n\tOrdinal0 [0x001F7364+881508]\n\tOrdinal0 [0x0020B56A+963946]\n\tOrdinal0 [0x001F7136+880950]\n\tOrdinal0 [0x001CFEFD+720637]\n\tOrdinal0 [0x001D0F3F+724799]\n\tGetHandleVerifier [0x005CEED2+2769538]\n\tGetHandleVerifier [0x005C0D95+2711877]\n\tGetHandleVerifier [0x003AA03A+521194]\n\tGetHandleVerifier [0x003A8DA0+516432]\n\tOrdinal0 [0x002B682C+1665068]\n\tOrdinal0 [0x002BB128+1683752]\n\tOrdinal0 [0x002BB215+1683989]\n\tOrdinal0 [0x002C6484+1729668]\n\tBaseThreadInitThunk [0x7611FEF9+25]\n\tRtlGetAppContainerNamedObjectPath [0x76F17BBE+286]\n\tRtlGetAppContainerNamedObjectPath [0x76F17B8E+238]\n", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mInvalidArgumentException\u001b[0m Traceback (most recent call last)", + "Input \u001b[1;32mIn [109]\u001b[0m, in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m listanombres \u001b[38;5;241m=\u001b[39m [] \n\u001b[1;32m----> 2\u001b[0m nombres \u001b[38;5;241m=\u001b[39m \u001b[43mdriver\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfind_element\u001b[49m\u001b[43m(\u001b[49m\u001b[43mby\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mrecomender-block-item\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mrecomender-block-item-title text-center\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m nombre \u001b[38;5;129;01min\u001b[39;00m nombres:\n\u001b[0;32m 4\u001b[0m producto \u001b[38;5;241m=\u001b[39m nombre\u001b[38;5;241m.\u001b[39mget_attribute(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtitle\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", + "File \u001b[1;32mC:\\ANACONDA\\lib\\site-packages\\selenium\\webdriver\\remote\\webdriver.py:861\u001b[0m, in \u001b[0;36mWebDriver.find_element\u001b[1;34m(self, by, value)\u001b[0m\n\u001b[0;32m 858\u001b[0m by \u001b[38;5;241m=\u001b[39m By\u001b[38;5;241m.\u001b[39mCSS_SELECTOR\n\u001b[0;32m 859\u001b[0m value \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m[name=\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;124m'\u001b[39m \u001b[38;5;241m%\u001b[39m value\n\u001b[1;32m--> 861\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexecute\u001b[49m\u001b[43m(\u001b[49m\u001b[43mCommand\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mFIND_ELEMENT\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43musing\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mby\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mvalue\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", + "File \u001b[1;32mC:\\ANACONDA\\lib\\site-packages\\selenium\\webdriver\\remote\\webdriver.py:444\u001b[0m, in \u001b[0;36mWebDriver.execute\u001b[1;34m(self, driver_command, params)\u001b[0m\n\u001b[0;32m 442\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcommand_executor\u001b[38;5;241m.\u001b[39mexecute(driver_command, params)\n\u001b[0;32m 443\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m response:\n\u001b[1;32m--> 444\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43merror_handler\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcheck_response\u001b[49m\u001b[43m(\u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 445\u001b[0m response[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_unwrap_value(response\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m))\n\u001b[0;32m 446\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n", + "File \u001b[1;32mC:\\ANACONDA\\lib\\site-packages\\selenium\\webdriver\\remote\\errorhandler.py:249\u001b[0m, in \u001b[0;36mErrorHandler.check_response\u001b[1;34m(self, response)\u001b[0m\n\u001b[0;32m 247\u001b[0m alert_text \u001b[38;5;241m=\u001b[39m value[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124malert\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtext\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 248\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exception_class(message, screen, stacktrace, alert_text) \u001b[38;5;66;03m# type: ignore[call-arg] # mypy is not smart enough here\u001b[39;00m\n\u001b[1;32m--> 249\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exception_class(message, screen, stacktrace)\n", + "\u001b[1;31mInvalidArgumentException\u001b[0m: Message: invalid argument: invalid locator\n (Session info: chrome=107.0.5304.122)\nStacktrace:\nBacktrace:\n\tOrdinal0 [0x0031ACD3+2075859]\n\tOrdinal0 [0x002AEE61+1633889]\n\tOrdinal0 [0x001AB7BD+571325]\n\tOrdinal0 [0x001DA745+763717]\n\tOrdinal0 [0x001DAE1B+765467]\n\tOrdinal0 [0x0020D0F2+970994]\n\tOrdinal0 [0x001F7364+881508]\n\tOrdinal0 [0x0020B56A+963946]\n\tOrdinal0 [0x001F7136+880950]\n\tOrdinal0 [0x001CFEFD+720637]\n\tOrdinal0 [0x001D0F3F+724799]\n\tGetHandleVerifier [0x005CEED2+2769538]\n\tGetHandleVerifier [0x005C0D95+2711877]\n\tGetHandleVerifier [0x003AA03A+521194]\n\tGetHandleVerifier [0x003A8DA0+516432]\n\tOrdinal0 [0x002B682C+1665068]\n\tOrdinal0 [0x002BB128+1683752]\n\tOrdinal0 [0x002BB215+1683989]\n\tOrdinal0 [0x002C6484+1729668]\n\tBaseThreadInitThunk [0x7611FEF9+25]\n\tRtlGetAppContainerNamedObjectPath [0x76F17BBE+286]\n\tRtlGetAppContainerNamedObjectPath [0x76F17B8E+238]\n" + ] + } + ], + "source": [ + "listanombres = [] \n", + "nombres = driver.find_element(by = 'recomender-block-item', value ='recomender-block-item-title text-center' )\n", + "for nombre in nombres:\n", + " producto = nombre.get_attribute('title')\n", + " listanombres.append(producto)\n", + " print(producto)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dfd11b4b-8caa-4424-b458-82c142efd33b", + "metadata": {}, + "outputs": [], + "source": [ + "
\n", + "NEVIR NVR-8060-434K2S Negro - TV Smart TV UHD 4K\n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0e4eb4e4-9cd2-40a5-a8ae-15ab40fa4dd5", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ef4bd5e8-8a41-47fa-83db-64ed52196e91", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6529bddb-d23c-4faf-8b40-fa0783965978", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95789c11-f7bf-435b-be98-dca499c08230", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5e58264c-4a6b-4d60-b0a7-2cb2aa6c3fdc", + "metadata": {}, + "outputs": [], + "source": [ + "###[][][]|||" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ef6c0807-ea9f-4075-9387-343301450456", + "metadata": {}, + "outputs": [], + "source": [ + "###[][][]|||" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "53533129-8f09-41ea-bbc9-dfc1cab6ddbb", + "metadata": {}, + "outputs": [], + "source": [ + "###[][][]|||" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}