Best Python code snippet using playwright-python
pw_getHisDataJ_test3.py
Source:pw_getHisDataJ_test3.py  
...49            #  그리고, 첫ë²ì§¸í¸ë¦¬êµ¬ì¡°ìì  g ì ì½ì¸ì´ë¦ì´ ë¤ì´ìê³  ëë²ì§¸í¸ë¦¬êµ¬ì¡°ìì  i ì ì½ì¸ì´ë¦ì´ ë¤ì´ìë¤ê³  íë©´, '~~ X Y Z' ííì ì
ë í°ë¡ Zë ë 구조ì Z 모ë ì°¾ìì§ì§ë§, (ì¬ê¸°ì ë´ê° '구조'ë¼ê³  íëê±´ ì ì²´ í¸ë¦¬ì ì¼ë¶ë¥¼ ì기íëê²ì.) 50            #  ì½ì¸ì´ë¦ì ê°ì ¸ì¤ê¸°ìí´ ì´ ì
ë í°ì ë¤ì ' f g' 를 ë¶ì¬ì '~~ X Y Z f g' ì
ë í°ë¥¼ ì°ë©´ í¸ë¦¬ê²½ë¡1ì 매ì¹ëë ì½ì¸ì´ë¦(ìê°ì§ì리먼í¸)ë¤ë§ ì°¾ìì§ëê±°ì§. 51            #  '~~ X Y Z i' ì
ë í°ë¥¼ ì°ë©´ í¸ë¦¬ê²½ë¡2ì ì½ì¸ì´ë¦(ìê°ì§ì리먼í¸)ë¤ë§ ì°¾ìì§ëê±°ê³ . 52            #  ë°ë¼ì, ë§ì°ì¤í ì¤í¬ë¡¤ ìëë¡ ë´ë¦¬ì§ ììë, ê·¸ë¥ ëê°ì§ ì
ë í°ë¥¼ ì¬ì©íë©´ ííì´ì§ì 100ê° ì½ì¸ì´ë¦ë¤ì ì ë¶ ë¤ ê°ì ¸ì¬ ì ìëê±°ì§. 53            coinCMCnames_inViewport = await page.locator('tr td a[href*="/currencies/"][href$="/"]:not([href$="/markets/"]):not([href$="/airdrop/"]) >div>div>p').all_inner_texts() 54            coinCMCtickers_inViewport = await page.locator('tr td a[href*="/currencies/"][href$="/"]:not([href$="/markets/"]):not([href$="/airdrop/"]) >div>div>div>p').all_inner_texts() 55            coinCMCnames_outViewport = await page.locator('tr td a[href*="/currencies/"][href$="/"]:not([href$="/markets/"]):not([href$="/airdrop/"]) > :nth-child(2)').all_inner_texts()56            coinCMCtickers_outViewport = await page.locator('tr td a[href*="/currencies/"][href$="/"]:not([href$="/markets/"]):not([href$="/airdrop/"]) > :nth-child(3)').all_inner_texts()57            coinCMCnames_oneP = coinCMCnames_inViewport + coinCMCnames_outViewport 58            coinCMCtickers_oneP = coinCMCtickers_inViewport + coinCMCtickers_outViewport 59            assert len(coinCMCnames_oneP)==len(set(coinCMCnames_oneP))==len(coinCMCtickers_oneP)==len(set(coinCMCtickers_oneP)) == 100 60            coinCMCnameTickerTups_oneP = list(zip(coinCMCnames_oneP, coinCMCtickers_oneP)) 61            nameTickerTup2coinUrl_oneP = {nameTickerTup: coinUrl for (nameTickerTup, coinUrl) in zip(coinCMCnameTickerTups_oneP, urls_oneP)} 62            # print(f'j) ì½ì¸CMC(ì´ë¦,í°ì»¤)ë¤ {len(coinCMCnameTickerTups_oneP)}ê°: {coinCMCnameTickerTups_oneP}\n') 63            print(f'j) {pageUrl}ì ì½ì¸CMC(ì´ë¦,í°ì»¤)->ì½ì¸url ë§µ (ì½ì¸ {len(nameTickerTup2coinUrl_oneP)}ê°): {nameTickerTup2coinUrl_oneP}\n') 64            65            66            # await page.mouse.wheel(0, 9000) 67            # # await page.wait_for_timeout(2500) 68            # coinCMCnames_loc = page.locator('tr td a[href*="/currencies/"][href$="/"]:not([href$="/markets/"]):not([href$="/airdrop/"])') # ì¼ë¨ ì¤í¬ë¡¤ 맨ë°ê¹ì§ ë´ë¦¬ê³  ì´ê±° ì°ë©´ ì½ì¸CMCì´ë¦ì´ í¬í¨ë¼ì ëì¤ê¸´ íë¤!!! /21.12.14.2:28. 69            # # coinCMCnames_loc = page.locator('tr td a[href*="/currencies/"][href$="/"]:not([href$="/markets/"])>div>div>p') 70            # # coinCMCnames_loc = page.locator('tbody>tr>td>div>a>div>div>p')             71            # print(f'j) coinCMCnames_loc.count(): {await coinCMCnames_loc.count()}') 72            # all_inner_texts = await coinCMCnames_loc.all_inner_texts()73            # print(f'\nj) {pageUrl}ì all_inner_texts {len(all_inner_texts)}ê°: {all_inner_texts}')74            # all_text_contents = await coinCMCnames_loc.all_text_contents() 75            # print(f'\nj) {pageUrl}ì all_text_contents {len(all_text_contents)}ê°: {all_text_contents}') 76            77            # coinCMCnames_oneP = await coinCMCnames_loc.evaluate_all('selecteds=>selecteds.map(e=>e.innerText)') 78            # # print(f'j) {pageUrl} ì ì½ì¸CMCì´ë¦ë¤ {len(coinCMCnames_oneP)}ê°: {coinCMCnames_oneP}\n') 79            return urls_oneP, coinCMCnames_oneP 80            # TODO TODO TODO ë©ì¸íë©´ì ì½ì¸ëª
, urlì ì½ì¸ëª
 ëë¤ ê°ì ¸ìì ë§µíí´ëëê² ì¢ìë¯. /21.12.12.13:48. 81        82        # TODO TODO TODO 맨ë§ì§ë§ ë± íê° ì½ì¸ {'https://coinmarketcap.com/currencies/apenft/'} ë문ì ê³~~~ì while문 ëë¤;;; ëì§?? 83        #  í¹ì ë§ì°ì¤ë¡ ë¤ìíì´ì§ í´ë¦íëê±°ë ë¬ë¦¬, urlë¡ ë°ë¡ ë¤ìíì´ì§ë¡ ëì´ê°ë©´ ë ë¤ë¥¸ê°??? /21.12.12.23:24. 84        # ì¡°ì¬ëì ì½ì¸ë¤ url ê°ì ¸ì´. 85        while True: # í¹ìë ííì´ì§(100ê°ì½ì¸)ë¨ìë¡ ê°ì ¸ì¤ëëì¤ ìì´ìì ë¬ë¼ì ¸ì ì¤ë³µëëì½ì¸ ì길경ì°, 첫íì´ì§ë¶í° ë¤ì ìì. /21.12.12.16:26. 86            coinUrls = []...pw_getHisDataJ_test.py
Source:pw_getHisDataJ_test.py  
...32            # ì´ì  í¹ì  ì½ì¸ì nì¼ì¹ ìì¸ë°ì´í°ê° 모ë ì¹íì´ì§ì ë³´ì´ë ìí©ì. ì§ê¸ì 1ë
ì¹ë¡ í´ì¤¬ê³ . 33            tableRows_loc = page.locator('table.cmc-table tbody tr') 34            # print(f'j) type tableRows_loc: {type(tableRows_loc)}') # <class 'playwright.async_api._generated.Locator'> 35            print(f'j) tableRows_loc.count(): {await tableRows_loc.count()}') 36            # print(f'j) tableRows_loc.all_inner_texts(): {await tableRows_loc.all_inner_texts()}') 37            38            # ê± ëª¨ë  tdë¤ì ì íí locatorë¡ all_inner_texts í´ì£¼ê³ ëì ê° row ë³ë¡ 묶ì´ì¤ë ëì§ë§, í¹ìë ììê° ì ëë¡ ìëê±°ë í ê¹ë´ ì´ë ê² rowë³ë¡ í´ì¤ë´. /21.12.2.13:08. 39            table_vals = await tableRows_loc.evaluate_all(40                """41                trs=>trs.map(42                    tr => Array.from(tr.childNodes).map(td=>td.innerText) 43                ) 44                """45            )46            print(f'j) len table_vals: {len(table_vals)}') 47            print(f'j) table_vals: {table_vals}') 48            # # ê·¸ë¥ íë² í´ë³¸ ë¶ë¶. 49            # # ëª¨ë  tdë¤ ì íí´ì rowë³ë¡ 묶ìë¤ì ìê°ì´ë ëê°ìì§ ë¹êµí´ë´. /21.12.2.13:12. 50            # tableCells_loc = page.locator('table.cmc-table tbody tr td') # ëª¨ë  td ë¤. ì¢->ì°, ì->í ììëë¡ì¸ë¯? /21.12.2.12:43. 51            # print(f'j) tableCells_loc.count(): {await tableCells_loc.count()}') 52            # tableCells = await tableCells_loc.all_inner_texts() 53            # table_vals2 = []54            # row = []55            # for i, e in enumerate(tableCells):56            #     row.append(e) 57            #     if (i+1)%7 == 0: 58            #         table_vals2.append(row) 59            #         row = []         60            # print(f'\nj) len table_vals2: {len(table_vals2)}') 61            # print(f'j) table_vals2: {table_vals2}')         62            # # table_vals ë table_vals2 ë ê°ë¤ ë° ìì ìì í ëê°ìì§ í¨ íì¸í´ë´. /21.12.2.13:28. 63            # for (row1, row2) in zip(table_vals, table_vals2): 64            #     for (e1, e2) in zip(row1, row2):65            #         if e1!=e2:66            #             raise ValueError(f'j) Error!!! ê°ì´ ì¼ì¹í´ì¼íëë° ë¤ë¦!!! {e1} != {e2}') ...subito.py
Source:subito.py  
...35            for t in typology:36                house_links[m] = {swap_dict(typology_map['subito'])[t]: []}37                try:38                    page.goto(f"https://www.subito.it/annunci-sicilia/vendita/{t}/catania/{m}")39                    navs_txt = ' '.join(page.locator("nav").all_inner_texts())40                    max_page = max([int(n) for n in re.findall(r"(\d+)", navs_txt)])41                except:42                    max_page = 143                for page_n in range(1, max_page+1):44                    page.goto(f"https://www.subito.it/annunci-sicilia/vendita/{t}/catania/{m}/?o={page_n}",45                                wait_until='domcontentloaded', timeout=30*1000)46                    houses_html = page.locator('.items').first.inner_html()47                    soup = BeautifulSoup(houses_html, 'html.parser')48                    house_links[m][swap_dict(typology_map['subito'])[t]].extend([l['href'] for l in soup.find_all('a', href=True)49                                        if urlparse(l['href']).path.startswith('/'+t)])50            print(house_links.keys())51        page.close()52        context.close()53        houses = []54        for m in house_links.keys():55            for t in house_links[m].keys():56                hl_stacks = np.array_split(house_links[m][t], ceil(len(house_links[m][t])/250))57                for hl_stack in hl_stacks:58                    context = open_context(browser, trace)59                    for link in tqdm(hl_stack, total=len(hl_stack)):60                        page = context.new_page()61                        page.route(re.compile(r"(\.png$)|(\.jpg$)"), lambda route: route.abort())62                        page.goto(link, wait_until='domcontentloaded')63                        title = page.locator('h1').first.inner_text()64                        surface = page.locator("text=/\d+ mq/").first.inner_text()65                        description = page.locator('p:below(:text("Descrizione"))').first.inner_text()66                        index = int(re.findall(r"(\d+)", page.url)[-1])67                        house = House(index, 'subito', link, t, m, title, surface, description)68                        69                        if page.is_visible("span:has-text('â¬')"):70                            price = page.locator("span:has-text('â¬')").first.inner_text()71                            house.price = price72                        else:73                            house.price = ''74                        if page.is_visible('span:right-of(:text("Piano"))'):75                            ait = ' '.join(page.locator('span:right-of(:text("Piano"))').all_inner_texts())76                            house.floor = re.findall(r"\d{1}", ait)[0]77                        else:78                            house.floor = ''79                        80                        if page.is_visible('span:right-of(:text("Locali"))'):81                            ait = ' '.join(page.locator('span:right-of(:text("Locali"))').all_inner_texts())82                            house.rooms = re.findall(r"\d{1,2}", ait)[0]83                        else:84                            house.rooms = ''85                        houses.append(house)86                        page.close()87                    context.close()88        df = pd.DataFrame(houses)89        df.to_csv("house.csv", index=False)90        print(df)91        houses = SubitoHouses(df)92        houses.preprocess()93        houses.dump(pd.Timestamp.now().strftime("%Y-%m-%d"))...pw_getHisDataJ_test4.py
Source:pw_getHisDataJ_test4.py  
...24        print(f'j) {pageUrl} ì ê° ì½ì¸ urlë¤ ì´ {len(urls_oneP)}ê° ì°¾ì. (100ê°ì¬ì¼í¨)') 25        # assert (await coinUrls_loc.count()) == len(urls_oneP) == 100, f'j) {pageUrl} ì ê° ì½ì¸ urlì´ {len(urls_oneP)}ê°ì!!! (100ê°ì¬ì¼íëë°.)' 26        27        # # (ì½ì¸CMCì´ë¦, í°ì»¤) ííì 리ì¤í¸ ë§ë¦. ëì¤ì ì½ì¸CMCì´ë¦<->ì½ì¸urlì´ë¦ ë§µí ìí´. /21.12.14.22:33. 28        # coinCMCnames_inViewport = await page.locator('tr td a[href*="/currencies/"][href$="/"]:not([href$="/markets/"]):not([href$="/airdrop/"]) >div>div>p').all_inner_texts() 29        # coinCMCtickers_inViewport = await page.locator('tr td a[href*="/currencies/"][href$="/"]:not([href$="/markets/"]):not([href$="/airdrop/"]) >div>div>div>p').all_inner_texts() 30        # coinCMCnames_outViewport = await page.locator('tr td a[href*="/currencies/"][href$="/"]:not([href$="/markets/"]):not([href$="/airdrop/"]) > :nth-child(2)').all_inner_texts()31        # coinCMCtickers_outViewport = await page.locator('tr td a[href*="/currencies/"][href$="/"]:not([href$="/markets/"]):not([href$="/airdrop/"]) > :nth-child(3)').all_inner_texts()32        # coinCMCnames_oneP = coinCMCnames_inViewport + coinCMCnames_outViewport # ëí´ì£¼ë ìì ì¤ì. /21.12.14.20:10. 33        # coinCMCtickers_oneP = coinCMCtickers_inViewport + coinCMCtickers_outViewport 34        # assert len(coinCMCnames_oneP)==len(set(coinCMCnames_oneP))==len(coinCMCtickers_oneP)==len(set(coinCMCtickers_oneP)) == 100 35        # coinCMCnameTickerTups_oneP = list(zip(coinCMCnames_oneP, coinCMCtickers_oneP)) # [('Bitcoin', 'BTC), ('Ethereum', 'ETH'), ...] 36        # # print(f'j) ì½ì¸CMC(ì´ë¦,í°ì»¤)ë¤ {len(coinCMCnameTickerTups_oneP)}ê°: {coinCMCnameTickerTups_oneP}\n') 37            38import time 39t1 = time.time()...LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!
