
    ZhZ                     \    d dl mZmZmZ d dlmZ d dlmZ d dlZd dl	Z	d dl
Z
d Zd Zd ZdS )    )sub
IGNORECASEfindall)Session)BeautifulSoupNc                 8  K   g d}t                      }|j                            t          j        |          dddddddd	d
ddddd           	 t          j        t          j        dd                     d{V  |                    dd           t          j        t          j        dd                     d{V  |                    | d          }|j	        dk    rt          |j        d          }g d}d}d}|D ]1}|                    |          }|r|                    d          r n2|r|                    d          ry|                    d          }	t          d|	            t          dd|	t                     }
t          dd|
          }
|
r&t#          |
          }t%          j        d |            g d!}d}|D ]e}|                    |          }|rL|                    d          r6|                    d          }t          d"| d#|dd$          d%            nf|s|                    d&          }|r|                                }t          d'|            |                    d(d                              d)          d*                             d+          d*         }|                                }||f|                                 S t%          j        d,|  d-|j	                    |j	        d.k    rt%          j        d/           	 |                                 d0S # t4          $ r9}t%          j        d1|  d2|            Y d}~|                                 d0S d}~ww xY w# |                                 w xY w)3z`
    Scrape both Flipkart product price and name in a single request to avoid rate limiting
    )zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36zuMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36zeMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36zPMozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/121.0zen-US,en;q=0.9,hi;q=0.8z`text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8zgzip, deflate, brzhttps://www.flipkart.com/zhttps://www.flipkart.comz
keep-alive1documentnavigatezsame-originz?1zno-cache)z
User-AgentzAccept-LanguageAcceptzAccept-EncodingRefererOrigin
ConnectionzUpgrade-Insecure-RequestszSec-Fetch-DestzSec-Fetch-ModezSec-Fetch-SitezSec-Fetch-UserzCache-ControlPragma      N
   )timeout         lxml)zdiv._30jeq3._16Jk6dzdiv._30jeq3zdiv._16Jk6dzspan._30jeq3._16Jk6dzspan._30jeq3zdiv.Nx9bqj.CxhGGdzdiv._30jeq3.CgYfOw.j-ONb3T)stripzFound price: u	   [₹,$\s] )flagsz[^\d.]z!Successfully extracted price: Rs.)
zspan.VU-ZEzzspan.B_NuCIzh1.x-product-title-labelz
h1._35KyD6zspan._35KyD6z	h1.yhZ71dzspan.yhZ71dzspan.VU-ZEz._36FX1Lz	h1.Wphh3Nz[data-testid='product-title']zFound title with selector 'z': 2   z...titlezUsing page title: zBuy z onliner   z at bestzError fetching URL: z, status code: i  z5403 Forbidden - Consider using a VPN or proxy service)NNzException during request to z: )r   headersupdaterandomchoiceasynciosleepuniformgetstatus_coder   content
select_oneget_textprintr   r   floatlogginginfofindreplacesplitr   closeerror	Exception)urluser_agentssessiondatasoupprice_selectorspricepricedivselector
price_textprice_cleantitle_selectorsproduct_name
title_elemr   
title_textclean_titlees                     2F:\Savad\Price\PriceTrackerBot\flipkart_scraper.pyscrape_flipkart_price_and_namerF      sR     
  K iiGOmK004t..,"%($$'#    "TmFN1a00111111111 	/<<<mFN1a00111111111 {{3{++s"" v66D  O EH+  ??844  1 1 1 = = E NH--D-99 N%..T.::
2j22333!,JjQQQ!)R== N!+..EL!LU!L!LMMM  O  L+  !__X66
 *"5"5D"5"A"A #-#6#6T#6#B#BL[[[\RUSURUEV[[[\\\E   7		'** 7!&!1!1J;z;;<<<","4"4VR"@"@"F"Fy"Q"QRS"T"Z"Z[e"f"fgh"iK#.#4#4#6#6L& 	 MWWWTEUWWXXX3&&UVVV
 		    ?S??A??@@@zzz	 	s1   JL= (>L= =
N M;!N ;N  N Nc                 :   K   t          |            d{V \  }}|S )zZ
    Scrape Flipkart product price using the working implementation from Flipkart-Bot
    N)rF   )r4   r@   r:   s      rE   scrape_flipkart_pricerH   }   s1       !?s C CCCCCCCL%L    c                    ddl }	  |j                    } |j        |           |                    t	          |                     \  }}|                                 |S # t          $ r}t          d|            Y d}~dS d}~ww xY w)zW
    Extract product name from Flipkart URL - now uses the combined async function
    r   NzError extracting product name: )r"   new_event_loopset_event_looprun_until_completerF   r1   r3   r*   )r4   r"   loopr@   _rD   s         rE   extract_flipkart_product_namerP      s     NNN	%w%''t$$$112PQT2U2UVVa

   333444ttttts   AA   
B*BB)rer   r   r   requestsr   bs4r   r"   r    r,   rF   rH   rP    rI   rE   <module>rU      s    ' ' ' ' ' ' ' ' ' '               s s sj      rI   