{"id":23271,"date":"2024-10-10T11:16:57","date_gmt":"2024-10-10T11:16:57","guid":{"rendered":"https:\/\/kwebby.com\/blog\/?p=23271"},"modified":"2024-10-10T11:17:03","modified_gmt":"2024-10-10T11:17:03","slug":"scrape-user-accounts-instagram","status":"publish","type":"post","link":"https:\/\/kwebby.com\/blog\/scrape-user-accounts-instagram\/","title":{"rendered":"How to scrape User Accounts on Instagram (Script Included)"},"content":{"rendered":"\n<p>Scraping user <a href=\"https:\/\/kwebby.com\/blog\/private-instagram-account\/\" data-type=\"post\" data-id=\"20237\">accounts on Instagram<\/a> is an effective method for gathering data and gaining insights into user behaviours and trends.<\/p>\n\n\n\n<p>In this guide, we will explore how to achieve this using <a href=\"https:\/\/kwebby.com\/blog\/draggan-ai-tool\/\" data-type=\"post\" data-id=\"15137\">Python<\/a>, a powerful programming language that offers extensive libraries and frameworks for web scraping tasks.<\/p>\n\n\n\n<p>We&#8217;ll be utilizing <a href=\"https:\/\/kwebby.com\/blog\/best-windows-text-editors\/\" data-type=\"post\" data-id=\"21225\">Visual Studio Code<\/a> as our integrated <a href=\"https:\/\/kwebby.com\/blog\/terminal-commands-developer\/\" data-type=\"post\" data-id=\"14653\">development<\/a> environment, ensuring a streamlined coding experience. Key Python libraries such as <a href=\"https:\/\/www.selenium.dev\/downloads\/\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/www.selenium.dev\/downloads\/\" rel=\"noreferrer noopener\">Selenium<\/a> will play a crucial role, allowing us to automate and navigate web pages effortlessly.<\/p>\n\n\n\n<p>Furthermore, tools like <a href=\"https:\/\/developer.chrome.com\/docs\/chromedriver\/downloads\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/developer.chrome.com\/docs\/chromedriver\/downloads\" rel=\"noreferrer noopener\">ChromeDriver<\/a> will be essential for simulating a browser environment and ensuring seamless interaction with Instagram&#8217;s web interface. With these tools at our disposal, we&#8217;ll demystify the process and equip you with the skills needed to scrape <a href=\"https:\/\/kwebby.com\/blog\/delete-instagram-account\/\" data-type=\"post\" data-id=\"19960\">Instagram user accounts<\/a> efficiently and responsibly.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Setup Environment<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Download and Setup<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"451\" src=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001932@2x-1024x451.png\" alt=\"\" class=\"wp-image-23272\" title=\"\" srcset=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001932@2x-1024x451.png 1024w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001932@2x-300x132.png 300w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001932@2x-768x338.png 768w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001932@2x.png 1230w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>First, download Visual Studio Code and Python from their respective official websites according to your operating system:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Visual Studio Code<\/strong>: Visit <a href=\"https:\/\/code.visualstudio.com\/\" target=\"_blank\">Visual Studio Code&#8217;s official website<\/a> to download the version that is compatible with your OS.<\/li>\n\n\n\n<li><strong>Python<\/strong>: Head over to <a href=\"https:\/\/www.python.org\/downloads\/\" target=\"_blank\">Python&#8217;s official website<\/a> and select the installer that matches your operating system.<\/li>\n\n\n\n<li><strong>PiP:<\/strong> Once Python is installed, make sure to also <a href=\"https:\/\/packaging.python.org\/en\/latest\/tutorials\/installing-packages\/#ensure-you-can-run-pip-from-the-command-line\" target=\"_blank\">install PiP (Python Package Index),<\/a> a tool that helps manage and install Python packages. This can be done by running the command `python get-pip.py` in your terminal or command prompt.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Create Folder<\/h3>\n\n\n\n<p>Once both installations are complete, proceed by creating a dedicated folder for your project.<\/p>\n\n\n\n<p>Navigate to your desktop or another location of your choice and create a new folder named `scraper`.<\/p>\n\n\n\n<p>Open this folder using Visual Studio Code, which you can do by selecting &#8220;Open Folder&#8221; from the File menu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Create a Blank Scraper File<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"452\" src=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001934@2x-1024x452.png\" alt=\"\" class=\"wp-image-23273\" title=\"\" srcset=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001934@2x-1024x452.png 1024w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001934@2x-300x132.png 300w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001934@2x-768x339.png 768w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001934@2x.png 1232w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Create a new file named `scraper.py` inside the&#8217; scraper&#8217; folder.<\/p>\n\n\n\n<p>This file will be where you write your Python script for scraping Instagram user accounts. With this setup, you&#8217;re ready to begin coding in an organized workspace that will streamline your development process.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Download Chrome Driver to Same Folder<\/h3>\n\n\n\n<p><strong>Check Your Chrome Version<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"540\" src=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/Settings-About-Chrome_Google-Chrome_001936@2x-1024x540.png\" alt=\"\" class=\"wp-image-23274\" title=\"\" srcset=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/Settings-About-Chrome_Google-Chrome_001936@2x-1024x540.png 1024w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/Settings-About-Chrome_Google-Chrome_001936@2x-300x158.png 300w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/Settings-About-Chrome_Google-Chrome_001936@2x-768x405.png 768w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/Settings-About-Chrome_Google-Chrome_001936@2x-1536x810.png 1536w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/Settings-About-Chrome_Google-Chrome_001936@2x-2048x1081.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Open Google Chrome. Click on the three vertical dots in the top-right corner to access Chrome settings. Navigate to &#8220;Help&#8221; and then select &#8220;About Google Chrome.&#8221; A new tab will open displaying your current Chrome version (e.g., Version 92.0.4515.107).<\/p>\n\n\n\n<p><strong>Search for ChromeDriver<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"540\" src=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/chromedriver-129.0.6668.91-download-Google-Search_Google-Chrome_001938@2x-1024x540.png\" alt=\"\" class=\"wp-image-23275\" title=\"\" srcset=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/chromedriver-129.0.6668.91-download-Google-Search_Google-Chrome_001938@2x-1024x540.png 1024w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/chromedriver-129.0.6668.91-download-Google-Search_Google-Chrome_001938@2x-300x158.png 300w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/chromedriver-129.0.6668.91-download-Google-Search_Google-Chrome_001938@2x-768x405.png 768w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/chromedriver-129.0.6668.91-download-Google-Search_Google-Chrome_001938@2x-1536x810.png 1536w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/chromedriver-129.0.6668.91-download-Google-Search_Google-Chrome_001938@2x-2048x1081.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Now that you have your Chrome version, open a new tab in your web browser. Type &#8220;chromedriver 92.0.4515.107 download&#8221; into the search bar, replacing &#8220;92.0.4515.107&#8221; with your actual Chrome version.<\/p>\n\n\n\n<p><strong>Download ChromeDriver<\/strong>:<\/p>\n\n\n\n<p>Click on the first link in the search results that offers a download. Ensure that the link is specifically for &#8220;ChromeDriver,&#8221; not Chrome itself. Typically, the official source will be from a site like chromedriver.chromium.org.<\/p>\n\n\n\n<p><strong>Select and Download the Appropriate File<\/strong>:<\/p>\n\n\n\n<p>On the ChromeDriver download page, select the <a href=\"https:\/\/getwebdriver.com\/chromedriver#stable\" data-type=\"link\" data-id=\"https:\/\/getwebdriver.com\/chromedriver#stable\" target=\"_blank\">ChromeDriver version <\/a>that matches your Chrome version. Download the appropriate file for your operating system (Windows, Mac, or Linux).<\/p>\n\n\n\n<p><strong>Save and Extract ChromeDriver<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"551\" src=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/ChromeDriver-Latest-Releases-Versions-Downloads-Chrome-for-Testing-availability_Google-Chrome_001940@2x-1024x551.png\" alt=\"\" class=\"wp-image-23276\" title=\"\" srcset=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/ChromeDriver-Latest-Releases-Versions-Downloads-Chrome-for-Testing-availability_Google-Chrome_001940@2x-1024x551.png 1024w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/ChromeDriver-Latest-Releases-Versions-Downloads-Chrome-for-Testing-availability_Google-Chrome_001940@2x-300x161.png 300w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/ChromeDriver-Latest-Releases-Versions-Downloads-Chrome-for-Testing-availability_Google-Chrome_001940@2x-768x413.png 768w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/ChromeDriver-Latest-Releases-Versions-Downloads-Chrome-for-Testing-availability_Google-Chrome_001940@2x-1536x827.png 1536w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/ChromeDriver-Latest-Releases-Versions-Downloads-Chrome-for-Testing-availability_Google-Chrome_001940@2x-2048x1102.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Once the download is complete, navigate to your Downloads folder (or the folder where you saved the file). Locate the downloaded ChromeDriver zip file, and extract its contents into your `scraper` folder that you created earlier.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"590\" src=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001942@2x-1024x590.png\" alt=\"\" class=\"wp-image-23277\" title=\"\" srcset=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001942@2x-1024x590.png 1024w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001942@2x-300x173.png 300w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001942@2x-768x443.png 768w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001942@2x.png 1152w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>By completing these steps, you&#8217;ll have the ChromeDriver executable set up in your project directory, ready for seamless integration into your web scraping tasks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Scrape Instagram User Accounts<\/h2>\n\n\n\n<p>To efficiently scrape Instagram user accounts, follow these detailed step-by-step instructions to set up and execute your Python script.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Prepare Your Python Script:<\/strong><\/h3>\n\n\n\n<p>Copy and paste the provided Python script into your `scraper.py` file located in the `scraper` folder. This script will govern the scraping process;<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"from selenium import webdriver\nfrom selenium.webdriver.common.by import By\nfrom selenium.webdriver.support.ui import WebDriverWait\nfrom selenium.webdriver.support import expected_conditions as EC\nfrom selenium.webdriver.chrome.service import Service\nfrom twocaptcha import TwoCaptcha\nimport time\nimport csv\nfrom datetime import datetime\n\nclass InstagramScraper:\n    def __init__(self, username, password, api_key):\n        self.username = username\n        self.password = password\n        self.solver = TwoCaptcha(api_key)\n        \n        # Chrome driver setup\n        chrome_options = webdriver.ChromeOptions()\n        chrome_options.add_argument('--no-sandbox')\n        chrome_options.add_argument('--disable-dev-shm-usage')\n        \n        service = Service('\/Users\/kwebby\/Downloads\/chromedriver_mac_arm64\/chromedriver')\n        self.driver = webdriver.Chrome(service=service, options=chrome_options)\n        self.wait = WebDriverWait(self.driver, 10)\n\n    def login(self):\n        try:\n            print(&quot;Logging in to Instagram...&quot;)\n            self.driver.get('https:\/\/www.instagram.com\/accounts\/login\/')\n            time.sleep(5)\n\n            username_input = self.wait.until(EC.presence_of_element_located((By.NAME, 'username')))\n            username_input.send_keys(self.username)\n            print(&quot;Username entered&quot;)\n\n            password_input = self.driver.find_element(By.NAME, 'password')\n            password_input.send_keys(self.password)\n            print(&quot;Password entered&quot;)\n\n            login_button = self.driver.find_element(By.CSS_SELECTOR, &quot;button[type='submit']&quot;)\n            login_button.click()\n            print(&quot;Login button clicked&quot;)\n\n            time.sleep(10)\n            return True\n            \n        except Exception as e:\n            print(f&quot;Login failed: {str(e)}&quot;)\n            return False\n\n    def scrape_hashtag(self, hashtag, max_posts=50):\n        csv_filename = f'instagram_hashtag_{hashtag}_{datetime.now().strftime(&quot;%Y%m%d_%H%M%S&quot;)}.csv'\n        \n        try:\n            print(f&quot;Opening hashtag page: #{hashtag}&quot;)\n            self.driver.get(f'https:\/\/www.instagram.com\/explore\/tags\/{hashtag}\/')\n            time.sleep(5)\n\n            with open(csv_filename, 'w', newline='', encoding='utf-8') as csvfile:\n                writer = csv.writer(csvfile)\n                writer.writerow(['Post URL', 'Profile URL', 'Username'])\n                print(f&quot;Created CSV file: {csv_filename}&quot;)\n\n                posts_processed = 0\n                processed_urls = set()\n\n                while posts_processed &lt; max_posts:\n                    print(f&quot;Currently processed {posts_processed} posts&quot;)\n                    \n                    post_links = self.driver.find_elements(By.CSS_SELECTOR, 'a[href*=&quot;\/p\/&quot;]')\n                    \n                    for link in post_links:\n                        if posts_processed &gt;= max_posts:\n                            break\n                            \n                        try:\n                            post_url = link.get_attribute('href')\n                            \n                            if post_url in processed_urls:\n                                continue\n                                \n                            print(f&quot;\\nProcessing post: {post_url}&quot;)\n                            \n                            self.driver.execute_script(&quot;arguments[0].click();&quot;, link)\n                            time.sleep(3)\n                            \n                            # Wait for the post modal to appear\n                            article = self.wait.until(EC.presence_of_element_located((By.TAG_NAME, 'article')))\n                            \n                            try:\n                                # Find the header element that contains the username link\n                                header = article.find_element(By.CSS_SELECTOR, 'header')\n                                \n                                # Get the profile link and username\n                                profile_link = header.find_element(By.CSS_SELECTOR, 'a')\n                                profile_url = profile_link.get_attribute('href')\n                                username = profile_url.split('\/')[-2]  # Extract username from profile URL\n                                \n                                print(f&quot;Found profile URL: {profile_url}&quot;)\n                                print(f&quot;Found username: {username}&quot;)\n                                \n                                # Write to CSV\n                                writer.writerow([post_url, profile_url, username])\n                                csvfile.flush()\n                                \n                                print(f&quot;Saved to CSV: {post_url}, {profile_url}, {username}&quot;)\n                                \n                            except Exception as e:\n                                print(f&quot;Error extracting profile info: {str(e)}&quot;)\n                                writer.writerow([post_url, '', ''])\n                                csvfile.flush()\n                            \n                            posts_processed += 1\n                            processed_urls.add(post_url)\n                            \n                            # Close the post modal\n                            close_button = self.driver.find_element(By.CSS_SELECTOR, 'svg[aria-label=&quot;Close&quot;]')\n                            close_button.click()\n                            time.sleep(2)\n                            \n                        except Exception as e:\n                            print(f&quot;Error processing post: {str(e)}&quot;)\n                            try:\n                                self.driver.find_element(By.CSS_SELECTOR, 'svg[aria-label=&quot;Close&quot;]').click()\n                            except:\n                                pass\n                            continue\n                    \n                    # Scroll to load more posts\n                    self.driver.execute_script(&quot;window.scrollTo(0, document.body.scrollHeight);&quot;)\n                    time.sleep(3)\n\n            print(f&quot;\\nScraping completed. Total posts processed: {posts_processed}&quot;)\n            print(f&quot;Data saved to: {csv_filename}&quot;)\n            \n        except Exception as e:\n            print(f&quot;Error during scraping: {str(e)}&quot;)\n        \n        return csv_filename\n\n    def close(self):\n        self.driver.quit()\n\ndef main():\n    try:\n        username = input(&quot;Enter your Instagram username: &quot;)\n        password = input(&quot;Enter your Instagram password: &quot;)\n        api_key = input(&quot;Enter your 2captcha API key: &quot;)\n        hashtag = input(&quot;Enter the hashtag to scrape (without #): &quot;)\n        max_posts = int(input(&quot;Enter maximum number of posts to scrape: &quot;))\n        \n        scraper = InstagramScraper(username, password, api_key)\n        \n        if scraper.login():\n            print(&quot;Successfully logged in to Instagram&quot;)\n            csv_file = scraper.scrape_hashtag(hashtag, max_posts)\n            print(f&quot;Scraping completed. Results saved to: {csv_file}&quot;)\n        else:\n            print(&quot;Failed to login to Instagram&quot;)\n        \n        scraper.close()\n        \n    except Exception as e:\n        print(f&quot;An error occurred: {str(e)}&quot;)\n\nif __name__ == &quot;__main__&quot;:\n    main()\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> selenium <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> webdriver<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> selenium<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">webdriver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">common<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">by <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> By<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> selenium<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">webdriver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">support<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">ui <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> WebDriverWait<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> selenium<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">webdriver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">support <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> expected_conditions <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> EC<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> selenium<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">webdriver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">chrome<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">service <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> Service<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> twocaptcha <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> TwoCaptcha<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> time<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> csv<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> datetime <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> datetime<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">class<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">InstagramScraper<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">__init__<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">username<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">password<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">api_key<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">username <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> username<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">password <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> password<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">solver <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">TwoCaptcha<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">api_key<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #616E88\"># Chrome driver setup<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        chrome_options <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> webdriver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">ChromeOptions<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        chrome_options<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">add_argument<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">--no-sandbox<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        chrome_options<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">add_argument<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">--disable-dev-shm-usage<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        service <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Service<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">\/Users\/kwebby\/Downloads\/chromedriver_mac_arm64\/chromedriver<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">driver <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> webdriver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">Chrome<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">service<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">service<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">options<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">chrome_options<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">wait <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">WebDriverWait<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">driver<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">login<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">try<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Logging in to Instagram...<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">driver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">get<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">https:\/\/www.instagram.com\/accounts\/login\/<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            time<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">sleep<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">5<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            username_input <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">wait<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">until<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">EC<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">presence_of_element_located<\/span><span style=\"color: #ECEFF4\">((<\/span><span style=\"color: #D8DEE9FF\">By<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">NAME<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">username<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            username_input<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">send_keys<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">username<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Username entered<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            password_input <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">driver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">find_element<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">By<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">NAME<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">password<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            password_input<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">send_keys<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">password<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Password entered<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            login_button <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">driver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">find_element<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">By<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">CSS_SELECTOR<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">button[type=&#39;submit&#39;]<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            login_button<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">click<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Login button clicked<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            time<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">sleep<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">True<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">except<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Exception<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> e<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;Login failed: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #88C0D0\">str<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">e<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">False<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">scrape_hashtag<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">hashtag<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">max_posts<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #B48EAD\">50<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        csv_filename <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&#39;instagram_hashtag_<\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">hashtag<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">_<\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">datetime<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">now<\/span><span style=\"color: #ECEFF4\">().<\/span><span style=\"color: #88C0D0\">strftime<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">%Y%m<\/span><span style=\"color: #EBCB8B\">%d<\/span><span style=\"color: #A3BE8C\">_%H%M%S<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">.csv&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">try<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;Opening hashtag page: #<\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">hashtag<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">driver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">get<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&#39;https:\/\/www.instagram.com\/explore\/tags\/<\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">hashtag<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">\/&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            time<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">sleep<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">5<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">with<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">open<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">csv_filename<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">w<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">newline<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&#39;&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">encoding<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">utf-8<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> csvfile<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                writer <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> csv<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">writer<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">csvfile<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                writer<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">writerow<\/span><span style=\"color: #ECEFF4\">([<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">Post URL<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">Profile URL<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">Username<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;Created CSV file: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">csv_filename<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                posts_processed <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                processed_urls <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">set<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #81A1C1\">while<\/span><span style=\"color: #D8DEE9FF\"> posts_processed <\/span><span style=\"color: #81A1C1\">&lt;<\/span><span style=\"color: #D8DEE9FF\"> max_posts<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;Currently processed <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">posts_processed<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\"> posts&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    post_links <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">driver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">find_elements<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">By<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">CSS_SELECTOR<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">a[href*=&quot;\/p\/&quot;]<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    <\/span><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> link <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> post_links<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> posts_processed <\/span><span style=\"color: #81A1C1\">&gt;=<\/span><span style=\"color: #D8DEE9FF\"> max_posts<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #81A1C1\">break<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                        <\/span><span style=\"color: #81A1C1\">try<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            post_url <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> link<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">get_attribute<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">href<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> post_url <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> processed_urls<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><span style=\"color: #81A1C1\">continue<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #EBCB8B\">\\n<\/span><span style=\"color: #A3BE8C\">Processing post: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">post_url<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">driver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">execute_script<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">arguments[0].click();<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> link<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            time<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">sleep<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #616E88\"># Wait for the post modal to appear<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            article <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">wait<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">until<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">EC<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">presence_of_element_located<\/span><span style=\"color: #ECEFF4\">((<\/span><span style=\"color: #D8DEE9FF\">By<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">TAG_NAME<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">article<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #81A1C1\">try<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><span style=\"color: #616E88\"># Find the header element that contains the username link<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                header <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> article<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">find_element<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">By<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">CSS_SELECTOR<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">header<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><span style=\"color: #616E88\"># Get the profile link and username<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                profile_link <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> header<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">find_element<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">By<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">CSS_SELECTOR<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">a<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                profile_url <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> profile_link<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">get_attribute<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">href<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                username <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> profile_url<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">split<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">\/<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)[<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># Extract username from profile URL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;Found profile URL: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">profile_url<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;Found username: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">username<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><span style=\"color: #616E88\"># Write to CSV<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                writer<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">writerow<\/span><span style=\"color: #ECEFF4\">([<\/span><span style=\"color: #D8DEE9FF\">post_url<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> profile_url<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> username<\/span><span style=\"color: #ECEFF4\">])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                csvfile<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">flush<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;Saved to CSV: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">post_url<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">, <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">profile_url<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">, <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">username<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #81A1C1\">except<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Exception<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> e<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;Error extracting profile info: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #88C0D0\">str<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">e<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                writer<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">writerow<\/span><span style=\"color: #ECEFF4\">([<\/span><span style=\"color: #D8DEE9FF\">post_url<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;&#39;<\/span><span style=\"color: #ECEFF4\">])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                csvfile<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">flush<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            posts_processed <\/span><span style=\"color: #81A1C1\">+=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            processed_urls<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">add<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">post_url<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #616E88\"># Close the post modal<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            close_button <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">driver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">find_element<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">By<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">CSS_SELECTOR<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">svg[aria-label=&quot;Close&quot;]<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            close_button<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">click<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            time<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">sleep<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                        <\/span><span style=\"color: #81A1C1\">except<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Exception<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> e<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;Error processing post: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #88C0D0\">str<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">e<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #81A1C1\">try<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">driver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">find_element<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">By<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">CSS_SELECTOR<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">svg[aria-label=&quot;Close&quot;]<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">).<\/span><span style=\"color: #88C0D0\">click<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #81A1C1\">except<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                <\/span><span style=\"color: #81A1C1\">pass<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #81A1C1\">continue<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    <\/span><span style=\"color: #616E88\"># Scroll to load more posts<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">driver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">execute_script<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">window.scrollTo(0, document.body.scrollHeight);<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    time<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">sleep<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #EBCB8B\">\\n<\/span><span style=\"color: #A3BE8C\">Scraping completed. Total posts processed: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">posts_processed<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;Data saved to: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">csv_filename<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">except<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Exception<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> e<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;Error during scraping: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #88C0D0\">str<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">e<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> csv_filename<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">close<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">self<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">driver<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">quit<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">main<\/span><span style=\"color: #ECEFF4\">():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">try<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        username <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">input<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Enter your Instagram username: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        password <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">input<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Enter your Instagram password: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        api_key <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">input<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Enter your 2captcha API key: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        hashtag <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">input<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Enter the hashtag to scrape (without #): <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        max_posts <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">int<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">input<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Enter maximum number of posts to scrape: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        scraper <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">InstagramScraper<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">username<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> password<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> api_key<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> scraper<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">login<\/span><span style=\"color: #ECEFF4\">():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Successfully logged in to Instagram<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            csv_file <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> scraper<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">scrape_hashtag<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">hashtag<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> max_posts<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;Scraping completed. Results saved to: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">csv_file<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">else<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Failed to login to Instagram<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        scraper<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">close<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">except<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Exception<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> e<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;An error occurred: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #88C0D0\">str<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">e<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> __name__ <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">__main__<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">main<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Install Necessary Dependencies:<\/strong><\/h3>\n\n\n\n<p>Open your terminal or command prompt and navigate to your `scraper` directory.<\/p>\n\n\n\n<p>Install the required Python libraries by executing the command:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"pip install selenium twocaptcha csv time datetime\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">pip install selenium twocaptcha csv time datetime<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>If you&#8217;re using Python 3, the command will be:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"pip3 install selenium twocaptcha\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">pip3 install selenium twocaptcha<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Note: The `twocaptcha` library is optional and is primarily needed if you encounter bot tests when using servers.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"239\" src=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001944@2x-1024x239.png\" alt=\"\" class=\"wp-image-23278\" title=\"\" srcset=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001944@2x-1024x239.png 1024w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001944@2x-300x70.png 300w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001944@2x-768x179.png 768w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001944@2x-1536x359.png 1536w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001944@2x-2048x478.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Update ChromeDriver Path<\/strong><\/h3>\n\n\n\n<p>Go to line 22 in your `scraper.py` file, where the ChromeDriver path is specified.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"355\" src=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001945.gif\" alt=\"\" class=\"wp-image-23279\" title=\"\"><\/figure>\n\n\n\n<p>Right-click the ChromeDriver executable located in your `scraper` folder, select &#8220;Copy path,&#8221; and paste this path into the appropriate line in your script.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Execute the Script:<\/strong><\/h3>\n\n\n\n<p>Once dependencies are installed and the path is updated, run the code by typing the following command in your terminal:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"python scraper.py\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">python scraper<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">py<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"has-d-8-dee-9-ff-color has-text-color\">Or for Python 3:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"python3 scraper.py\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">python3 scraper<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">py<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Provide User Input<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"356\" src=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001947@2x-1024x356.png\" alt=\"\" class=\"wp-image-23280\" title=\"\" srcset=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001947@2x-1024x356.png 1024w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001947@2x-300x104.png 300w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001947@2x-768x267.png 768w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/scraper.py-\u2014-Scripts_Code_001947@2x.png 1272w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>When prompted, enter the required inputs as follows:<\/p>\n\n\n\n<p><strong>Instagram username:<\/strong> Enter your Instagram username.<\/p>\n\n\n\n<p><strong>Instagram password:<\/strong> Provide your Instagram password. Don&#8217;t worry; this will be securely stored locally on your PC.<\/p>\n\n\n\n<p><strong>2captcha API key:<\/strong> (Optional) Enter your 2captcha API key if needed.<\/p>\n\n\n\n<p><strong>Hashtag to scrape:<\/strong> Input a hashtag (e.g., foryou, viral) without the `#` symbol.<\/p>\n\n\n\n<p><strong>Maximum number of posts to scrape:<\/strong> Specify how many posts you want to scrape, such as 10 or 20.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Result Data<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"409\" src=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/instagram_hashtag_AI_20241010_161248.csv-\u2014-Scripts_Code_001949@2x-1024x409.png\" alt=\"\" class=\"wp-image-23281\" title=\"\" srcset=\"https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/instagram_hashtag_AI_20241010_161248.csv-\u2014-Scripts_Code_001949@2x-1024x409.png 1024w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/instagram_hashtag_AI_20241010_161248.csv-\u2014-Scripts_Code_001949@2x-300x120.png 300w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/instagram_hashtag_AI_20241010_161248.csv-\u2014-Scripts_Code_001949@2x-768x307.png 768w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/instagram_hashtag_AI_20241010_161248.csv-\u2014-Scripts_Code_001949@2x-1536x614.png 1536w, https:\/\/kwebby.com\/blog\/wp-content\/uploads\/2024\/10\/instagram_hashtag_AI_20241010_161248.csv-\u2014-Scripts_Code_001949@2x-2048x819.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>You Will find the result data in the same folder with the .csv extension; you can select it and find all the details in it, i.e. Post URL, Profile URL and username.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Final Thoughts!<\/h2>\n\n\n\n<p>In conclusion, setting up and executing a Python script to scrape Instagram user accounts can be both an exciting and rewarding endeavor.<\/p>\n\n\n\n<p>By following the step-by-step instructions outlined in this guide, you have ensured a structured approach to efficiently extract data from Instagram. From installing essential tools like Visual Studio Code and Python, configuring ChromeDriver, to implementing your script with all necessary dependencies, each step has been meticulously crafted to facilitate a smooth scraping process.<\/p>\n\n\n\n<p>Remember, maintaining a secure environment by safely storing your credentials and responsibly using the scraping results will empower you to harness the full potential of Instagram data while adhering to privacy norms.<\/p>\n\n\n\n<p>Whether for research, marketing, or personal interest, this setup opens a world of data-driven possibilities.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Scraping user accounts on Instagram is an effective method for gathering data and gaining insights into user behaviours and trends. In this guide, we will&hellip;<\/p>\n","protected":false},"author":5,"featured_media":23282,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[522,407],"tags":[],"class_list":["post-23271","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development","category-instagram"],"_links":{"self":[{"href":"https:\/\/kwebby.com\/blog\/wp-json\/wp\/v2\/posts\/23271","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kwebby.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kwebby.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kwebby.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/kwebby.com\/blog\/wp-json\/wp\/v2\/comments?post=23271"}],"version-history":[{"count":0,"href":"https:\/\/kwebby.com\/blog\/wp-json\/wp\/v2\/posts\/23271\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kwebby.com\/blog\/wp-json\/wp\/v2\/media\/23282"}],"wp:attachment":[{"href":"https:\/\/kwebby.com\/blog\/wp-json\/wp\/v2\/media?parent=23271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kwebby.com\/blog\/wp-json\/wp\/v2\/categories?post=23271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kwebby.com\/blog\/wp-json\/wp\/v2\/tags?post=23271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}