{ "cells": [ { "cell_type": "markdown", "id": "d162b058", "metadata": {}, "source": [ "--- \n", " \n", "\n", "

Department of Data Science

\n", "

Course: Tools and Techniques for Data Science

\n", "\n", "---\n", "

Instructor: Muhammad Arif Butt, Ph.D.

\n" ] }, { "cell_type": "markdown", "id": "3184edc1", "metadata": {}, "source": [ "

Lecture 5.4 (Web Scraping using Selenium - II)

" ] }, { "cell_type": "markdown", "id": "35b552c1", "metadata": {}, "source": [ "\"Open" ] }, { "cell_type": "markdown", "id": "bca7407c", "metadata": {}, "source": [ "" ] }, { "cell_type": "code", "execution_count": null, "id": "90ab85fc", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "2d24678e", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "c8f244e9", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "c7682a1d", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "ba77e7b5", "metadata": {}, "source": [ "\n", "


\n", "\n", "## Learning agenda of this notebook\n", "\n", "**Recap of Previous Session**\n", "\n", "\n", "- **Best Practices for Web Scraping & Some Points to Ponder**\n", "\n", "\n", "- **Example 1:** Searching and Downloading Images for ML Classification:https://google.com\n", "\n", "\n", "\n", "- **Example 2:** Scraping Comments from a YouTube Video for NLP:https://www.youtube.com/watch?v=mHONNcZbwDY\n", "\n", "\n", "- **Example 3:** Scraping Jobs from a Job Website: https://pk.indeed.com\n", "\n", "\n", "- **Example 4:** Scraping Tweets of a celebirty: https://twitter.com/login\n", "\n", "\n", "- **Example 5:** Scraping News Articles for a News Website: https://www.thenews.com.pk/today\n", "\n", "\n", "- **Exercise:**\n" ] }, { "cell_type": "code", "execution_count": null, "id": "5db20d16", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "e6d009c1", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "ab3035a4", "metadata": {}, "source": [ "## Best Practices for Web Scraping & Some Points to Ponder" ] }, { "cell_type": "markdown", "id": "573400af", "metadata": {}, "source": [ "### a. Check if Website is Changing Layouts and use Robust Locators\n", "- Locating correct web element is a pre-requiste of web scraping. \n", "- We can use ID, Name, Class, Tag, LinkText and PartialLinkText to locate web elements in Selenium.\n", "- In dynamic environments the web elements mostly donot have consistent attribute values, therefore, finding a unique static attribute is quite a tricky task. Hence directly using above mentioned six selenium locators might not be able to uniquely identify a web element..\n", "- So in such situations CSS-Selector and XPATH should be preferred." ] }, { "cell_type": "code", "execution_count": null, "id": "c706299d", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "9ade05ea", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "2562f856", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "56957001", "metadata": {}, "source": [ "#### CSS SELECTOR\n", "- Basic Syntax: `tag[attribute='value']`\n", "- Using ID: `input[id='username']` or `input#username`\n", "- Using Class: `input[class='form-control']` or `input.form-control`\n", "- Using any attribute: `input[any-attr='attr-value']` \n", "- Combining attributes: `input.form-control[attr='value']`\n", "- Using Parent/Child Hierarchy: \n", " - Basic Syntax: `parent-locator > child-locator`\n", " - Direct Parent/Child: `div > input[attr = 'value']`" ] }, { "cell_type": "code", "execution_count": null, "id": "01accc26", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "11fc761b", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "a1d5c1fd", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "e4c483ca", "metadata": {}, "source": [ "#### XPATH SELECTOR\n", "- Basic Example:\n", " - Absolute XPATH: `/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input`\n", " - Relative XPATH: `//input[@title='Search']`\n", "- For dyanmic websites using simple XPATH might return multiple elements. To write effective XPATHS, one can use XPATH functions to identify elements uniquely:\n", " - Using contains(): `//input[contains(@id, 'userN')]` or `//input[@id, 'userNname']`\n", " - Using starts-with(): `//tagname[starts-with(@attribute, 'initial partial value of attribute')]`\n", " - Using text(): `//input[text() = 'text of the element')]`\n", "- You can use AND & OR operators to identify an element by combining two different conditions or attributes:\n", " - Using and: `//tagname[@name='value' and @id='value']`\n", " - Using or: `//tagname[@name='value' or @id='value']`\n", "- You can use XPATH Axis, which use the relationship between various nodes to locate a web element in the DOM structure:\n", " - `ancestor`: Locates ancestors of current node, which includes the parents upto the root node.\n", " - `descendant`: Locates descendants of current node, which includes the children upto the leaf node.\n", " - `child`: Locates the children of current node.\n", " - `parent`: Locates parent of the current node." ] }, { "cell_type": "code", "execution_count": null, "id": "e3634179", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "ea49ea93", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "d5a8bbad", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "63d39fa6", "metadata": {}, "source": [ "### b. Wait for the WebElement to be Displayed Before you Start Scraping\n", "- These days most of the web apps are using AJAX techniques. When a page is loaded by the browser, the elements within that page may load at different time intervals. This makes locating elements difficult: if an element is not yet present in the DOM, a locate function will raise an ElementNotVisibleException. \n", "- One can use `time.sleep(10)` to make our script wait for exact 10 seconds before proceeding. One should avoid using these static wait statements rather should use the dynamic waits provided by Selenium Webdriver.\n", "- Many times the web elements are not interactable, not clickable, or not visible, and thats where you have to put the wait so that the page gets loaded and your script can find that particular web element and proceed further.\n", " - **Implicit wait:**\n", " - Implicit wait applies to all the Web Elements in the test script\n", " - In implicit wait you specify a time out and your script wait for all the web elements to be loaded or raises an exception if the time expires.\n", " - Example: The `driver.implicitly_wait(30)` will wait for a maximum of 30 seconds before throwing a timeout exception. If all the web elements are available before 30 seconds, control will move to the next LOC.\n", " \n", " - **Explicit wait:**\n", " - Explicit wait is used to wait for a specific web element.\n", " - In explicit wait, other than specifying the time out, you also specify a condition to be checked, like checking if the element is visible, or clickable and so on.\n", " - Example: The `element = WebDriverWait(driver, 30).until(EC.presence_of_element_located(By.XPATH, 'xpath'))` will wait for a maximum of 30 seconds before throwing a timeout exception. If the specific web element becomes visible within 30 seconds, control will move to the next LOC.\n", " \n", " - **Fluent Wait** is quite similar to explicit wait, where you can specify the polling frequency. See Selenium documentations for details: https://www.selenium.dev/documentation/webdriver/waits/" ] }, { "cell_type": "code", "execution_count": null, "id": "eb69a8e0", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "8a7608b5", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "59cd8542", "metadata": {}, "source": [ "### c. Robots Exclusion Protocol\n", "- The robots exclusion protocol or simply `robots.txt`, is a standard used by websites to communicate with web crawlers/bots, informing them about which areas of the website can be scanned or scraped. \n", "- The `robots.txt` file is mostly placed in a website's top level directory and is publically available. A sub-domain on a root domain can also have separate `robots.txt` files.\n", "- The `robots.txt` file provides instructions for bots, however, it can't actually enforce the instructions.\n", "- So a good bot follows those instructions, while a bad bot ignore them." ] }, { "cell_type": "code", "execution_count": null, "id": "cfc14f53", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "7edd4a24", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "ce730b1a", "metadata": {}, "source": [ "### d. Do not Hammer the Webserver \n", "- Web scraping bots fetch data very fast, so it is easy for a website to detect your scraper.\n", "- So to make sure that your bot donot hammer the webserver by sending too many request in a very short span of time, you need to put some random programmatic sleep calls `time.sleep(2)` in between requests. " ] }, { "cell_type": "code", "execution_count": null, "id": "0e4ab7a1", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "c34726a1", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "7cd07023", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "9c2404c6", "metadata": {}, "source": [ "### e. Avoid Scraping Data Behind Login\n", "- If a page is protected by login, the scraper would have to send some information or cookies along with each request to view the page. \n", "- So be watchful, if you get caught, your account might get blocked." ] }, { "cell_type": "code", "execution_count": null, "id": "5033fd2e", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "906d8c9d", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "1c8e2371", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "a1a018e6", "metadata": {}, "source": [ "### f. Do not Follow Same Crawling Pattern\n", "- When humans browse a website, they have different view time, they are slow, and they perform random clicks. On the contrary bots are very fast and follow the same/fixed browsing pattern.\n", "- Some websites have intelligent anti-crawling mechanisms to detect spiders and may block your IP and you can no more visit that website.\n", "- A simple solution is to incorporate some random clicks on the page, mouse movements and random actions that will make your bot look like a human." ] }, { "cell_type": "code", "execution_count": null, "id": "b5aae158", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "193ef976", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "379e2864", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "e17ad1e1", "metadata": {}, "source": [ "### g. Beware of Honey Pots\n", "- Honeypots are systems that are used to lure hackers and detect any scraping attempts that try to gain information.\n", "- Some websites install honeypots, which are links invisible to normal users with color disguised to blend in with the page’s background color. But can be seen by bots and therefore one of the reasons to get caught.\n", "- So make sure that your bot take care that the link has proper visibility with no nofollow tag." ] }, { "cell_type": "code", "execution_count": null, "id": "52c4648b", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "3ffd62c6", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "03b8529a", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "4863e6a2", "metadata": {}, "source": [ "### h. Rotate User-Agents\n", "- Every request made from a web browser contains a user-agent header, and if the user agent is not set, websites won’t let you view content.\n", "- Using the same user-agent consistently leads to the detection of a bot. \n", "- The only way to make your User-Agent appear more real and bypass detection is to fake the user agent.\n", "> You can get your User-Agent by typing `what is my user agent` in Google’s search bar. " ] }, { "cell_type": "code", "execution_count": null, "id": "18d8327a", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "dd76f263", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "b2e23c94", "metadata": {}, "source": [ "### i. Make Requests through Proxies and Rotate Them as Needed\n", "- When scraping blindlessly, multiple requests coming from the same IP will lead you to get blocked\n", "- So better scrap from behind a proxy server, so the target website will not know where the original IP is from, making the detection harder.\n", "- There are several methods that can change your outgoing IP\n", " - TOR\n", " - VPNs\n", " - Free Proxies\n", " - Shared Proxies\n", " - Private Proxies\n", " - Data Center Proxies\n", " - Residential Proxies\n", "> You can get your IP by typing `what is my ip` in Google’s search bar." ] }, { "cell_type": "code", "execution_count": null, "id": "d862e66d", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "d80cee50", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "fbda0b5b", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "4f96b7b0", "metadata": {}, "source": [ "### j. Use CAPTCHA Solving Services\n", "- Many websites use CAPTCHAs to keep bots out of their websites.\n", "- If you want to scrape websites that use CAPTCHAs, you can use CAPTCHA services to get past these restrictions.\n", " - https://2captcha.com/\n", " - https://anti-captcha.com/\n", " - https://pypi.org/project/pytesseract/0.1/" ] }, { "cell_type": "code", "execution_count": null, "id": "6c3ed557", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "48421b3d", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "7db9952c", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "e1bb1959", "metadata": {}, "source": [ "## Example 1: Searching and Downloading Images for ML Classification:https://google.com" ] }, { "cell_type": "markdown", "id": "da53cfcc", "metadata": {}, "source": [ "### a. Search and Load the Images of Cats" ] }, { "cell_type": "code", "execution_count": 3, "id": "f6891dca", "metadata": {}, "outputs": [], "source": [ "from selenium.webdriver import Chrome\n", "from selenium.webdriver.chrome.service import Service\n", "from selenium.webdriver.chrome.options import Options\n", "from selenium.webdriver.common.by import By\n", "from selenium.webdriver.common.keys import Keys\n", "import time\n", "\n", "#Create an instance of webdriver and load the google webpage\n", "s = Service('/Users/arif/Documents/chromedriver')\n", "myoptions = Options()\n", "myoptions.headless = False # default settings\n", "driver = Chrome(service=s, options=myoptions) \n", "driver.maximize_window()\n", "driver.get('https://google.com') \n", "\n", "\n", "# locate the search textbox, enter the search string and press enter key\n", "driver.implicitly_wait(30)\n", "#tbox = driver.find_element(By.XPATH, '/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input')\n", "#tbox = driver.find_element(By.XPATH, \"//input[@title='Search']\")\n", "tbox = driver.find_element(By.CSS_SELECTOR, \"input[title='Search']\")\n", "tbox.send_keys(\"Cat\")\n", "\n", "\n", "# Instead of locating and clicking the search button, you can simplay press enter\n", "time.sleep(2)\n", "tbox.send_keys(Keys.ENTER) \n", "\n", "\n", "# Locate the image tab and click it to visit the images tab\n", "driver.implicitly_wait(30)\n", "#menu_img_link = driver.find_element(By.XPATH, '/html/body/div[7]/div/div[4]/div/div[1]/div/div[1]/div/div[2]/a')\n", "menu_img_link = driver.find_element(By.XPATH, '//*[@id=\"hdtb-msb\"]/div[1]/div/div[2]/a')\n", "menu_img_link.click()" ] }, { "cell_type": "code", "execution_count": null, "id": "c21ba6da", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "83d4464e", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "7c5a1bbd", "metadata": {}, "source": [ "### b. Self-Scroll to the Bottom of the Webpage\n", "- Create an instance of WebDriver\n", "- The `driver.execute_script(JS)` method is used to synchronously execute JavaScript in the current window/frame.\n", "```\n", "driver.execute_script('alert(\"Hello JavaScript\")')\n", "```\n", "- The `window.scrollTo()` method is used to perform scrolling operation. The pixels to be scrolled horizontally along the x-axis and pixels to be scrolled vertically along the y-axis are passed as parameters to the method." ] }, { "cell_type": "code", "execution_count": 4, "id": "8d997302", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Done... Reached the bottom of the page\n" ] } ], "source": [ "# Self-Scroll the entire page till you reach the bottom\n", "last_height =driver.execute_script('return document.body.scrollHeight')\n", "while True:\n", " driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')\n", " time.sleep(4)\n", " new_height =driver.execute_script('return document.body.scrollHeight')\n", " if (new_height == last_height):\n", " break\n", " last_height = new_height\n", "\n", "print(\"Done... Reached the bottom of the page\")" ] }, { "cell_type": "code", "execution_count": null, "id": "bff86ac7", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "82fd09af", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "9900f33c", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "99560332", "metadata": {}, "source": [ "### c. Save the Images by using the `screenshot()` method\n", "- Two ways to take a screenshot:\n", " - `driver.save_screenshot(filename)` Saves a screenshot of the current window to a PNG image file and returns a bool value\n", "\n", " - `element.screenshot(filename)` saves a screenshot of the current element to a PNG image file and Returns a bool value" ] }, { "cell_type": "code", "execution_count": 5, "id": "73f1173c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Done... Check the folder for images of cats\n" ] } ], "source": [ "from selenium.webdriver.support.ui import WebDriverWait\n", "from selenium.webdriver.support import expected_conditions as EC\n", "\n", "# downlaod and save 40 images of cats\n", "for i in range(1,41):\n", " try:\n", " WebDriverWait(driver, 5).until\n", " (EC.presence_of_element_located((By.XPATH, '//*[@id=\"islrg\"]/div[1]/div['+str(i)+']/a[1]/div[1]/img'))) \n", " cat_img = driver.find_element(By.XPATH, '//*[@id=\"islrg\"]/div[1]/div['+str(i)+']/a[1]/div[1]/img')\n", " cat_img.screenshot('/Users/arif/Downloads/cat_images/cat_img'+str(i)+'.png')\n", " except:\n", " continue\n", "\n", "print(\"Done... Check the folder for images of cats\")" ] }, { "cell_type": "code", "execution_count": null, "id": "4b3852dc", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "7a793a01", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 6, "id": "4411d96b", "metadata": {}, "outputs": [], "source": [ "driver.quit()" ] }, { "cell_type": "code", "execution_count": 7, "id": "65f966c5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cat_img1.png cat_img17.png cat_img24.png cat_img32.png cat_img4.png\r\n", "cat_img10.png cat_img18.png cat_img26.png cat_img33.png cat_img40.png\r\n", "cat_img11.png cat_img19.png cat_img27.png cat_img34.png cat_img5.png\r\n", "cat_img12.png cat_img2.png cat_img28.png cat_img35.png cat_img6.png\r\n", "cat_img13.png cat_img20.png cat_img29.png cat_img36.png cat_img7.png\r\n", "cat_img14.png cat_img21.png cat_img3.png cat_img37.png cat_img8.png\r\n", "cat_img15.png cat_img22.png cat_img30.png cat_img38.png cat_img9.png\r\n", "cat_img16.png cat_img23.png cat_img31.png cat_img39.png\r\n" ] } ], "source": [ "!ls /Users/arif/Downloads/cat_images" ] }, { "cell_type": "code", "execution_count": 8, "id": "5b206b38", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from matplotlib import image\n", "from matplotlib import pyplot as plt\n", "\n", "img1 = image.imread(\"/Users/arif/Downloads/cat_images/cat_img20.png\")\n", "plt.imshow(img1);" ] }, { "cell_type": "code", "execution_count": null, "id": "93b1246f", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "5e48f371", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "f82bcbe5", "metadata": {}, "source": [ "## Example 2: Scraping Comments from a YouTube Video\n", "- https://www.youtube.com/watch?v=mHONNcZbwDY&t=80s" ] }, { "cell_type": "code", "execution_count": 10, "id": "3e12c690", "metadata": {}, "outputs": [], "source": [ "driver.quit()" ] }, { "cell_type": "code", "execution_count": 11, "id": "f26ef41f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AuthorsComments
0NaNYou're an absolute legend Lionel
1Logene TemonioIt's 2022 and I'm listening to this Masterpiece ♡
2Joelfantastic ASMRGoing on 40 and this song is still one of my t...
3NaN
4Sofia2022 and i'm still addicted to this LEGENDARY ...
5Daiane SantosSou fã do Lionel \\nEle tem uma voz linda\\nViva...
6NaNUm anjo está cantando. Uma pausa para alegrar ...
7Marcia CorbinBeautiful words...beautiful music...beautiful ...
8Music ManeThis masterpiece gives me teary eyes every tim...
9dlnnyc64Still hits close to the heart almost 40 years ...
10Edmar Fernandes CoutoIsso que é música de valor.... muito sensivel ...
11Yancy JohnsonIt’s 2022 and THIS SONG STILL GOES STRONG!!!
12Maria Rosa Helena Do Prado E SilvaQue hino!!!!!! Amooooo
13Nina SchimelAno de 1984\\nSó eu sei o que representa essa c...
14CeciliasantosEu amo este clipe ️
15Sra. FranciscoUm dos clipes mais belos do mundo! Sinto-me en...
16João Marcos RodriguesEssa canção é emocionante, Lionel Richie é uma...
17Billyn IvyDon’t worry you’re not the the only one listen...
18Cicada3301Masterpiece. simply no words can describe the ...
19Carmen BazanOne morning in 1984 I was getting ready for wo...
20NaNI don’t care what I’m doing, whenever this son...
21ElnadrionUm anjo está cantando. Uma pausa para alegrar ...
22Volnei CarvalhoComo estás músicas são perfeitas lembra da min...
23adeyosolaLionel Richie is one of the best song writers ...
24Thisura YapaThat guitar solo is next level. No wonder tha...
25Luis MachadoLinda demais
26DachshundsRuleThis song brings me to tears, it was our song....
27Lourdes. Conceicaodossantos.Amei essa cena, muito liinda!
28Rita SilvaLionel Richie você é o cara.charmoso maravilho...
29drharshz2022 ..... This is golden! One of the best eve...
30Sherry GeorgeI grew up in the 80's. Some of the best music ...
31Gabriel apaixonado musicMúsica linda
32Angela ArringtonIt's 2022,and I'm listening.never get tired of...
33Marcos PintoTempo excelente que não volta mais maravilhos...
34Андрей БаздыревAs they say, this song is for all time! It is ...
35Denise Hedden2022 and I'm still listening to Lionel Richie....
36Saif MessiIt's simply an eternal song and it will still ...
37joshua jenningsSo many memories of this song ..a masterpiece ...
38Joel JimenezThis song is enchanting and touches the soul. ...
39Vilmara ReghiniEssa música faz parte da minha infância , meu ...
\n", "
" ], "text/plain": [ " Authors \\\n", "0 NaN \n", "1 Logene Temonio \n", "2 Joelfantastic ASMR \n", "3 NaN \n", "4 Sofia \n", "5 Daiane Santos \n", "6 NaN \n", "7 Marcia Corbin \n", "8 Music Mane \n", "9 dlnnyc64 \n", "10 Edmar Fernandes Couto \n", "11 Yancy Johnson \n", "12 Maria Rosa Helena Do Prado E Silva \n", "13 Nina Schimel \n", "14 Ceciliasantos \n", "15 Sra. Francisco \n", "16 João Marcos Rodrigues \n", "17 Billyn Ivy \n", "18 Cicada3301 \n", "19 Carmen Bazan \n", "20 NaN \n", "21 Elnadrion \n", "22 Volnei Carvalho \n", "23 adeyosola \n", "24 Thisura Yapa \n", "25 Luis Machado \n", "26 DachshundsRule \n", "27 Lourdes. Conceicaodossantos. \n", "28 Rita Silva \n", "29 drharshz \n", "30 Sherry George \n", "31 Gabriel apaixonado music \n", "32 Angela Arrington \n", "33 Marcos Pinto \n", "34 Андрей Баздырев \n", "35 Denise Hedden \n", "36 Saif Messi \n", "37 joshua jennings \n", "38 Joel Jimenez \n", "39 Vilmara Reghini \n", "\n", " Comments \n", "0 You're an absolute legend Lionel \n", "1 It's 2022 and I'm listening to this Masterpiece ♡ \n", "2 Going on 40 and this song is still one of my t... \n", "3 ️ \n", "4 2022 and i'm still addicted to this LEGENDARY ... \n", "5 Sou fã do Lionel \\nEle tem uma voz linda\\nViva... \n", "6 Um anjo está cantando. Uma pausa para alegrar ... \n", "7 Beautiful words...beautiful music...beautiful ... \n", "8 This masterpiece gives me teary eyes every tim... \n", "9 Still hits close to the heart almost 40 years ... \n", "10 Isso que é música de valor.... muito sensivel ... \n", "11 It’s 2022 and THIS SONG STILL GOES STRONG!!! \n", "12 Que hino!!!!!! Amooooo \n", "13 Ano de 1984\\nSó eu sei o que representa essa c... \n", "14 Eu amo este clipe ️ \n", "15 Um dos clipes mais belos do mundo! Sinto-me en... \n", "16 Essa canção é emocionante, Lionel Richie é uma... \n", "17 Don’t worry you’re not the the only one listen... \n", "18 Masterpiece. simply no words can describe the ... \n", "19 One morning in 1984 I was getting ready for wo... \n", "20 I don’t care what I’m doing, whenever this son... \n", "21 Um anjo está cantando. Uma pausa para alegrar ... \n", "22 Como estás músicas são perfeitas lembra da min... \n", "23 Lionel Richie is one of the best song writers ... \n", "24 That guitar solo is next level. No wonder tha... \n", "25 Linda demais \n", "26 This song brings me to tears, it was our song.... \n", "27 Amei essa cena, muito liinda! \n", "28 Lionel Richie você é o cara.charmoso maravilho... \n", "29 2022 ..... This is golden! One of the best eve... \n", "30 I grew up in the 80's. Some of the best music ... \n", "31 Música linda \n", "32 It's 2022,and I'm listening.never get tired of... \n", "33 Tempo excelente que não volta mais maravilhos... \n", "34 As they say, this song is for all time! It is ... \n", "35 2022 and I'm still listening to Lionel Richie.... \n", "36 It's simply an eternal song and it will still ... \n", "37 So many memories of this song ..a masterpiece ... \n", "38 This song is enchanting and touches the soul. ... \n", "39 Essa música faz parte da minha infância , meu ... " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from selenium.webdriver import Chrome\n", "from selenium.webdriver.chrome.service import Service\n", "from selenium.webdriver.chrome.options import Options\n", "from selenium.webdriver.common.by import By\n", "from selenium.webdriver.common.keys import Keys\n", "from selenium.webdriver.support.ui import WebDriverWait\n", "from selenium.webdriver.support import expected_conditions as EC\n", "import pandas as pd\n", "import time\n", "\n", "#Create an instance of webdriver and load/run the youtube video page\n", "s = Service('/Users/arif/Documents/chromedriver')\n", "myoptions = Options()\n", "myoptions.headless = False # default settings\n", "driver = Chrome(service=s, options=myoptions) \n", "driver.maximize_window()\n", "time.sleep(1)\n", "driver.get('https://www.youtube.com/watch?v=mHONNcZbwDY&t=80s')\n", "driver.implicitly_wait(30)\n", "play = driver.find_element(By.XPATH, '//*[@id=\"movie_player\"]/div[5]/button')\n", "play.click()\n", "\n", "# Perform three scrolls to get around 60 comments\n", "for scroll in range(1, 4): \n", " body = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.TAG_NAME, \"body\")))\n", " body.send_keys(Keys.END)\n", " time.sleep(12)\n", " \n", "\n", "# Scrape the comments\n", "comments = []\n", "comments_list = driver.find_elements(By.CSS_SELECTOR,\"#content-text\" )\n", "for comment in comments_list:\n", " text = comment.text.strip()\n", " comments.append(text)\n", "\n", "# Scrape the authors who made the comments\n", "authors = []\n", "authors_list = driver.find_elements(By.ID,\"author-text\")\n", "for author in authors_list:\n", " text = author.text.strip()\n", " authors.append(text)\n", "\n", "# Save the comments in csv file\n", "data = {'Authors':authors, 'Comments':comments}\n", "df = pd.DataFrame(data, columns=['Authors', 'Comments'])\n", "df.to_csv('hello.csv', index=False)" ] }, { "cell_type": "code", "execution_count": null, "id": "b42b93d5", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 12, "id": "3a4b67a4", "metadata": {}, "outputs": [], "source": [ "driver.quit()" ] }, { "cell_type": "code", "execution_count": 2, "id": "da9bff48", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AuthorsComments
0NaNYou're an absolute legend Lionel
1Logene TemonioIt's 2022 and I'm listening to this Masterpiece ♡
2Joelfantastic ASMRGoing on 40 and this song is still one of my top 10. Still gives me goose bumps!
3NaN
4Sofia2022 and i'm still addicted to this LEGENDARY SONG.️
5Daiane SantosSou fã do Lionel \\nEle tem uma voz linda\\nViva anos 70,80,90 tempos bons,com músicas boas.\\nHoje em dia só porcarias.
6NaNUm anjo está cantando. Uma pausa para alegrar o coração em tempos difíceis.
7Marcia CorbinBeautiful words...beautiful music...beautiful emotions...will always be timeless...
8Music ManeThis masterpiece gives me teary eyes every time, a pleasing pain and joy.
9dlnnyc64Still hits close to the heart almost 40 years ago. I can remember details of where I was and what my life was back then. I adored the video but ca...
10Edmar Fernandes CoutoIsso que é música de valor.... muito sensivel a pessoa q compôs essa letra
11Yancy JohnsonIt’s 2022 and THIS SONG STILL GOES STRONG!!!
12Maria Rosa Helena Do Prado E SilvaQue hino!!!!!! Amooooo
13Nina SchimelAno de 1984\\nSó eu sei o que representa essa canção pra mim....\\nSaudades!!
14CeciliasantosEu amo este clipe ️
15Sra. FranciscoUm dos clipes mais belos do mundo! Sinto-me encantada, apaixonada!
16João Marcos RodriguesEssa canção é emocionante, Lionel Richie é uma lenda
17Billyn IvyDon’t worry you’re not the the only one listening to this masterpiece in 2021
18Cicada3301Masterpiece. simply no words can describe the feelings this song evokes .
19Carmen BazanOne morning in 1984 I was getting ready for work when I first heard this song . Called the radio station to enquire about the title, once I knew i...
20NaNI don’t care what I’m doing, whenever this song plays on the radio, I stop everything I’m doing and focus on Lionels amazing voice
21ElnadrionUm anjo está cantando. Uma pausa para alegrar o coração em tempos difíceis.
22Volnei CarvalhoComo estás músicas são perfeitas lembra da minha infância ,pena que o tempo não volta
23adeyosolaLionel Richie is one of the best song writers of all time: this song is timeless ... it reminds me so much of my childhood \\nEndless Love is also ...
24Thisura YapaThat guitar solo is next level. No wonder that this went to number one on the UK Singles Chart for six weeks (In 1984).\\n\\nSuch a nice song........
25Luis MachadoLinda demais
26DachshundsRuleThis song brings me to tears, it was our song. He's been gone long years now, and our children have grown up and have families of their own. Our o...
27Lourdes. Conceicaodossantos.Amei essa cena, muito liinda!
28Rita SilvaLionel Richie você é o cara.charmoso maravilhoso muito charme cantor otimo voz maravilhosa melodias lindas.gosto muito de ti.rita Silva Souza Salv...
29drharshz2022 ..... This is golden! One of the best ever songs
30Sherry GeorgeI grew up in the 80's. Some of the best music came from the 70's and 80's. Lionel Ritchie's music is so beautiful and romantic.
31Gabriel apaixonado musicMúsica linda
32Angela ArringtonIt's 2022,and I'm listening.never get tired of Lionel's voice.
33Marcos PintoTempo excelente que não volta mais maravilhosas canções e obrigado a cantor que Deus abençoe
34Андрей БаздыревAs they say, this song is for all time! It is not often that you will find such a harmony of music, words and video in songs and clips. Thank you ...
35Denise Hedden2022 and I'm still listening to Lionel Richie. I love this song it's so precious to me️
36Saif MessiIt's simply an eternal song and it will still an icon of all romantic songs for along time , greetings to the legend Lionel Richie from Iraq
37joshua jenningsSo many memories of this song ..a masterpiece of hard work and dedication
38Joel JimenezThis song is enchanting and touches the soul. It brings back memories of a lost love. Recorded in 1983 and released on Feb 13, 1984. This song r...
39Vilmara ReghiniEssa música faz parte da minha infância , meu Deus como era tudo tao lindo e perfeito , meus pais os melhores do mundo , o amor que eles tiveram e...
\n", "
" ], "text/plain": [ " Authors \\\n", "0 NaN \n", "1 Logene Temonio \n", "2 Joelfantastic ASMR \n", "3 NaN \n", "4 Sofia \n", "5 Daiane Santos \n", "6 NaN \n", "7 Marcia Corbin \n", "8 Music Mane \n", "9 dlnnyc64 \n", "10 Edmar Fernandes Couto \n", "11 Yancy Johnson \n", "12 Maria Rosa Helena Do Prado E Silva \n", "13 Nina Schimel \n", "14 Ceciliasantos \n", "15 Sra. Francisco \n", "16 João Marcos Rodrigues \n", "17 Billyn Ivy \n", "18 Cicada3301 \n", "19 Carmen Bazan \n", "20 NaN \n", "21 Elnadrion \n", "22 Volnei Carvalho \n", "23 adeyosola \n", "24 Thisura Yapa \n", "25 Luis Machado \n", "26 DachshundsRule \n", "27 Lourdes. Conceicaodossantos. \n", "28 Rita Silva \n", "29 drharshz \n", "30 Sherry George \n", "31 Gabriel apaixonado music \n", "32 Angela Arrington \n", "33 Marcos Pinto \n", "34 Андрей Баздырев \n", "35 Denise Hedden \n", "36 Saif Messi \n", "37 joshua jennings \n", "38 Joel Jimenez \n", "39 Vilmara Reghini \n", "\n", " Comments \n", "0 You're an absolute legend Lionel \n", "1 It's 2022 and I'm listening to this Masterpiece ♡ \n", "2 Going on 40 and this song is still one of my top 10. Still gives me goose bumps! \n", "3 ️ \n", "4 2022 and i'm still addicted to this LEGENDARY SONG.️ \n", "5 Sou fã do Lionel \\nEle tem uma voz linda\\nViva anos 70,80,90 tempos bons,com músicas boas.\\nHoje em dia só porcarias. \n", "6 Um anjo está cantando. Uma pausa para alegrar o coração em tempos difíceis. \n", "7 Beautiful words...beautiful music...beautiful emotions...will always be timeless... \n", "8 This masterpiece gives me teary eyes every time, a pleasing pain and joy. \n", "9 Still hits close to the heart almost 40 years ago. I can remember details of where I was and what my life was back then. I adored the video but ca... \n", "10 Isso que é música de valor.... muito sensivel a pessoa q compôs essa letra \n", "11 It’s 2022 and THIS SONG STILL GOES STRONG!!! \n", "12 Que hino!!!!!! Amooooo \n", "13 Ano de 1984\\nSó eu sei o que representa essa canção pra mim....\\nSaudades!! \n", "14 Eu amo este clipe ️ \n", "15 Um dos clipes mais belos do mundo! Sinto-me encantada, apaixonada! \n", "16 Essa canção é emocionante, Lionel Richie é uma lenda \n", "17 Don’t worry you’re not the the only one listening to this masterpiece in 2021 \n", "18 Masterpiece. simply no words can describe the feelings this song evokes . \n", "19 One morning in 1984 I was getting ready for work when I first heard this song . Called the radio station to enquire about the title, once I knew i... \n", "20 I don’t care what I’m doing, whenever this song plays on the radio, I stop everything I’m doing and focus on Lionels amazing voice \n", "21 Um anjo está cantando. Uma pausa para alegrar o coração em tempos difíceis. \n", "22 Como estás músicas são perfeitas lembra da minha infância ,pena que o tempo não volta \n", "23 Lionel Richie is one of the best song writers of all time: this song is timeless ... it reminds me so much of my childhood \\nEndless Love is also ... \n", "24 That guitar solo is next level. No wonder that this went to number one on the UK Singles Chart for six weeks (In 1984).\\n\\nSuch a nice song........ \n", "25 Linda demais \n", "26 This song brings me to tears, it was our song. He's been gone long years now, and our children have grown up and have families of their own. Our o... \n", "27 Amei essa cena, muito liinda! \n", "28 Lionel Richie você é o cara.charmoso maravilhoso muito charme cantor otimo voz maravilhosa melodias lindas.gosto muito de ti.rita Silva Souza Salv... \n", "29 2022 ..... This is golden! One of the best ever songs \n", "30 I grew up in the 80's. Some of the best music came from the 70's and 80's. Lionel Ritchie's music is so beautiful and romantic. \n", "31 Música linda \n", "32 It's 2022,and I'm listening.never get tired of Lionel's voice. \n", "33 Tempo excelente que não volta mais maravilhosas canções e obrigado a cantor que Deus abençoe \n", "34 As they say, this song is for all time! It is not often that you will find such a harmony of music, words and video in songs and clips. Thank you ... \n", "35 2022 and I'm still listening to Lionel Richie. I love this song it's so precious to me️ \n", "36 It's simply an eternal song and it will still an icon of all romantic songs for along time , greetings to the legend Lionel Richie from Iraq \n", "37 So many memories of this song ..a masterpiece of hard work and dedication \n", "38 This song is enchanting and touches the soul. It brings back memories of a lost love. Recorded in 1983 and released on Feb 13, 1984. This song r... \n", "39 Essa música faz parte da minha infância , meu Deus como era tudo tao lindo e perfeito , meus pais os melhores do mundo , o amor que eles tiveram e... " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "df = pd.read_csv('hello.csv')\n", "pd.set_option('max_colwidth',150)\n", "df" ] }, { "cell_type": "code", "execution_count": null, "id": "391b9e14", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "b40ce802", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "2f531e38", "metadata": {}, "source": [ "## Example 3: Scraping Jobs: \n", "- https://pk.indeed.com" ] }, { "cell_type": "code", "execution_count": 13, "id": "7d502782", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CompanyJob TitleSalary
0Smart Placement (Pvt) LtdJunior/Intern Web DeveloperNo Salary
1Digital Media LineWeb Developer InternRs 5,000 - Rs 10,000 a month
2ThingTraxJr. Full Stack DeveloperRs 50,000 a month
3Alliance SolutionsWeb DeveloperRs 25,000 a month
4iDig DigitalFull Stack PHP Laravel Developer - Remote Posi...Rs 60,000 - Rs 126,159 a month
............
70VeriPark Software SolutionsSoftware Developer. NETNo Salary
71Cinco SolutionsPHP DevelopersRs 30,000 - Rs 50,000 a month
72FINCA InternationalFull Stack Web DeveloperNo Salary
73Nextbridge Pvt LtdSenior MERN DeveloperNo Salary
74ENTERTAINER FZ LLCPHP Full Stack Web DeveloperNo Salary
\n", "

75 rows × 3 columns

\n", "
" ], "text/plain": [ " Company \\\n", "0 Smart Placement (Pvt) Ltd \n", "1 Digital Media Line \n", "2 ThingTrax \n", "3 Alliance Solutions \n", "4 iDig Digital \n", ".. ... \n", "70 VeriPark Software Solutions \n", "71 Cinco Solutions \n", "72 FINCA International \n", "73 Nextbridge Pvt Ltd \n", "74 ENTERTAINER FZ LLC \n", "\n", " Job Title \\\n", "0 Junior/Intern Web Developer \n", "1 Web Developer Intern \n", "2 Jr. Full Stack Developer \n", "3 Web Developer \n", "4 Full Stack PHP Laravel Developer - Remote Posi... \n", ".. ... \n", "70 Software Developer. NET \n", "71 PHP Developers \n", "72 Full Stack Web Developer \n", "73 Senior MERN Developer \n", "74 PHP Full Stack Web Developer \n", "\n", " Salary \n", "0 No Salary \n", "1 Rs 5,000 - Rs 10,000 a month \n", "2 Rs 50,000 a month \n", "3 Rs 25,000 a month \n", "4 Rs 60,000 - Rs 126,159 a month \n", ".. ... \n", "70 No Salary \n", "71 Rs 30,000 - Rs 50,000 a month \n", "72 No Salary \n", "73 No Salary \n", "74 No Salary \n", "\n", "[75 rows x 3 columns]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from selenium.webdriver import Chrome\n", "from selenium.webdriver.chrome.service import Service\n", "from selenium.webdriver.chrome.options import Options\n", "from selenium.webdriver.common.by import By\n", "from selenium.webdriver.common.keys import Keys\n", "from selenium.webdriver.support.ui import WebDriverWait\n", "from selenium.webdriver.support import expected_conditions as EC\n", "import pandas as pd\n", "import time\n", "\n", "\n", "#Create an instance of webdriver and go the the appropriate job page\n", "s = Service('/Users/arif/Documents/chromedriver')\n", "myoptions = Options()\n", "myoptions.headless = False \n", "driver = Chrome(service=s, options=myoptions) \n", "driver.maximize_window()\n", "driver.get('https://pk.indeed.com')\n", "time.sleep(5)\n", "\n", "# Enter your search parameters and click FindJobs button\n", "what_box = driver.find_element(By.XPATH,'//*[@id=\"text-input-what\"]')\n", "where_box = driver.find_element(By.XPATH,'//*[@id=\"text-input-where\"]')\n", "button = driver.find_element(By.XPATH,'//*[@id=\"jobsearch\"]/button')\n", "what_box.send_keys('Full Stack Web Developer')\n", "where_box.send_keys('Lahore')\n", "button.click()\n", "time.sleep(5)\n", "\n", "\n", "# Function that scrape the three pieces of information of each job and is called on each page\n", "jobtitles = []\n", "companies = []\n", "salaries = []\n", "def jobs():\n", " time.sleep(2)\n", " postings = driver.find_elements(By.CSS_SELECTOR, '.resultContent') \n", " for posting in postings: \n", " try:\n", " job_title = posting.find_element(By.CSS_SELECTOR,'h2 a').text \n", " except:\n", " job_title = 'No Job title'\n", " try: \n", " company = posting.find_element(By.CSS_SELECTOR,'.companyName').text\n", " except:\n", " company = \"No company name\"\n", " try:\n", " salary = posting.find_element(By.CSS_SELECTOR,'.salary-snippet-container').text\n", " except:\n", " salary = \"No Salary\" \n", " companies.append(company)\n", " salaries.append(salary)\n", " jobtitles.append(job_title) \n", "\n", "\n", " \n", "# Click the next page button in the pagination bar\n", "while(True):\n", " time.sleep(4)\n", " try:\n", " pop_up = driver.find_element(By.CSS_SELECTOR,'.popover-x-button-close.icl-CloseButton')\n", " driver.find_element(By.CSS_SELECTOR,'.popover-x-button-close.icl-CloseButton').click()\n", " except:\n", " pass\n", " \n", " jobs() \n", " \n", " try: \n", " driver.find_element(By.CLASS_NAME,'pagination-list')\n", " driver.execute_script(\"arguments[0].scrollIntoView();\", driver.find_element(By.CLASS_NAME,'pagination-list'))\n", " try:\n", " driver.find_element(By.XPATH,'//*[@aria-label=\"Next\"]').click()\n", " except:\n", " break\n", " except:\n", " break\n", "\n", "\n", "\n", "# # Writing in the file\n", "data = {'Company':companies, 'Job Title':jobtitles, 'Salary':salaries}\n", "df = pd.DataFrame(data, columns=['Company', 'Job Title', 'Salary'])\n", "df.to_csv('jobs.csv', index=False)\n", "df = pd.read_csv('jobs.csv')\n", "df" ] }, { "cell_type": "code", "execution_count": 14, "id": "8c079a23", "metadata": {}, "outputs": [], "source": [ "driver.quit()" ] }, { "cell_type": "code", "execution_count": null, "id": "ccfc462e", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "3288fef6", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "6dba26fb", "metadata": {}, "source": [ "## Example 4: Scraping: https://twitter.com/login" ] }, { "cell_type": "code", "execution_count": 15, "id": "c168e37b", "metadata": {}, "outputs": [], "source": [ "from selenium.webdriver import Chrome\n", "from selenium.webdriver.chrome.service import Service\n", "from selenium.webdriver.chrome.options import Options\n", "from selenium.webdriver.common.by import By\n", "from selenium.webdriver.support.ui import WebDriverWait\n", "from selenium.webdriver.common.keys import Keys\n", "from selenium.webdriver.support import expected_conditions as EC\n", "import pandas as pd\n", "import time\n", "import os\n", "\n", "# Create an instance of webdriver and get the twitter login page\n", "s = Service('/Users/arif/Documents/chromedriver')\n", "myoptions = Options()\n", "driver = Chrome(service=s, options=myoptions) \n", "driver.maximize_window()\n", "driver.get('https://twitter.com/login') \n", "driver.implicitly_wait(30)\n", "\n", "\n", "# Enter username and password\n", "time.sleep(5)\n", "username = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//input[@name=\"text\"]'))) \n", "username.send_keys('username')\n", "username.send_keys(Keys.ENTER) \n", "time.sleep(2)\n", "passwd = WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, '//input[@name=\"password\"]')))\n", "passwd.send_keys(os.environ['yourtwitterpassword']) # actual passwd is saved in an environment variable :)\n", "passwd.send_keys(Keys.ENTER)\n", "\n", "\n", "# Enter Celebrity name (Imran Khan) in Search Textbox\n", "time.sleep(2)\n", "search_input = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH,'//input[@aria-label=\"Search query\"]')))\n", "search_input.send_keys(\"Imran Khan\")\n", "time.sleep(2)\n", "search_input.send_keys(Keys.ENTER)\n", "\n", "\n", "## Click on People tab for People Profiles using LINK_TEXT Locator\n", "time.sleep(2)\n", "people = WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.LINK_TEXT, 'People')))\n", "people.click()\n", "\n", "\n", "# Click on the twitter link of Imran Khan\n", "time.sleep(2)\n", "click_imran = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.LINK_TEXT, 'Imran Khan')))\n", "click_imran.click()\n" ] }, { "cell_type": "code", "execution_count": 16, "id": "1e3f1499", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
UserTimesTweets
0@ImranKhanPTI1hThe nation continues to suffer crushing econom...
1@ImranKhanPTI1hThis was despite the sharp slow down after reg...
2@ImranKhanPTI3 Julامپورٹڈ حکومت اوراسکےپشت پناہوں کیلئےمیرا واضح...
3@ImranKhanPTI3 Julبدمعاشوں کا یہ ٹولہ جس انداز میں عوام کو مہنگا...
4@ImranKhanPTI3 JulMy clear message to Imported govt & its backer...
5@ImranKhanPTI3 Julwealth, its only a matter of time before we g...
6@ImranKhanPTI3 Julنہایت کثیر تعداد میں باہرنکلنے اور مجرموں کی ا...
7@ImranKhanPTI1hThe nation continues to suffer crushing econom...
8@ImranKhanPTI1hThis was despite the sharp slow down after reg...
9@ImranKhanPTIJul 3امپورٹڈ حکومت اوراسکےپشت پناہوں کیلئےمیرا واضح...
10@ImranKhanPTIJul 3بدمعاشوں کا یہ ٹولہ جس انداز میں عوام کو مہنگا...
11@ImranKhanPTIJul 3My clear message to Imported govt & its backer...
12@ImranKhanPTIJul 3wealth, its only a matter of time before we g...
13@ImranKhanPTIJul 3نہایت کثیر تعداد میں باہرنکلنے اور مجرموں کی ا...
14@ImranKhanPTIJul 3I want to thank the people of Islamabad & Pind...
15@ImranKhanPTIJul 2میں پاکستان+دنیابھرمیں مقیم پاکستانیوں سےملتمس...
16@ImranKhanPTIJul 2I request all Pakistanis living in Pakistan an...
17@ImranKhanPTIJul 1لاہورمیں آج سینئرصحافی ایاز امیر پر تشدد کی شد...
18@ImranKhanPTIJul 1I condemn in strongest terms the violence agai...
19@ImranKhanPTIJul 1امپورٹڈحکومت کےسیاسی عدمِ استحکام اور موسمِ گر...
20@ImranKhanPTIJul 1InshaAllah tomorrow will be our historic Islam...
21@ImranKhanPTIJul 1روس سےسستا تیل خریدنےکی بجائےتبدیلئ سرکار کی س...
22@ImranKhanPTIJul 1Instead of buying cheaper oil from Russia Impo...
23@ImranKhanPTIJun 27Congratulations Ahmad Nawaz on being elected P...
24@ImranKhanPTIJun 27اپنی ٹائیگر فورس، اپنے نوجوانوں اور اپنی خواتی...
\n", "
" ], "text/plain": [ " User Times Tweets\n", "0 @ImranKhanPTI 1h The nation continues to suffer crushing econom...\n", "1 @ImranKhanPTI 1h This was despite the sharp slow down after reg...\n", "2 @ImranKhanPTI 3 Jul امپورٹڈ حکومت اوراسکےپشت پناہوں کیلئےمیرا واضح...\n", "3 @ImranKhanPTI 3 Jul بدمعاشوں کا یہ ٹولہ جس انداز میں عوام کو مہنگا...\n", "4 @ImranKhanPTI 3 Jul My clear message to Imported govt & its backer...\n", "5 @ImranKhanPTI 3 Jul wealth, its only a matter of time before we g...\n", "6 @ImranKhanPTI 3 Jul نہایت کثیر تعداد میں باہرنکلنے اور مجرموں کی ا...\n", "7 @ImranKhanPTI 1h The nation continues to suffer crushing econom...\n", "8 @ImranKhanPTI 1h This was despite the sharp slow down after reg...\n", "9 @ImranKhanPTI Jul 3 امپورٹڈ حکومت اوراسکےپشت پناہوں کیلئےمیرا واضح...\n", "10 @ImranKhanPTI Jul 3 بدمعاشوں کا یہ ٹولہ جس انداز میں عوام کو مہنگا...\n", "11 @ImranKhanPTI Jul 3 My clear message to Imported govt & its backer...\n", "12 @ImranKhanPTI Jul 3 wealth, its only a matter of time before we g...\n", "13 @ImranKhanPTI Jul 3 نہایت کثیر تعداد میں باہرنکلنے اور مجرموں کی ا...\n", "14 @ImranKhanPTI Jul 3 I want to thank the people of Islamabad & Pind...\n", "15 @ImranKhanPTI Jul 2 میں پاکستان+دنیابھرمیں مقیم پاکستانیوں سےملتمس...\n", "16 @ImranKhanPTI Jul 2 I request all Pakistanis living in Pakistan an...\n", "17 @ImranKhanPTI Jul 1 لاہورمیں آج سینئرصحافی ایاز امیر پر تشدد کی شد...\n", "18 @ImranKhanPTI Jul 1 I condemn in strongest terms the violence agai...\n", "19 @ImranKhanPTI Jul 1 امپورٹڈحکومت کےسیاسی عدمِ استحکام اور موسمِ گر...\n", "20 @ImranKhanPTI Jul 1 InshaAllah tomorrow will be our historic Islam...\n", "21 @ImranKhanPTI Jul 1 روس سےسستا تیل خریدنےکی بجائےتبدیلئ سرکار کی س...\n", "22 @ImranKhanPTI Jul 1 Instead of buying cheaper oil from Russia Impo...\n", "23 @ImranKhanPTI Jun 27 Congratulations Ahmad Nawaz on being elected P...\n", "24 @ImranKhanPTI Jun 27 اپنی ٹائیگر فورس، اپنے نوجوانوں اور اپنی خواتی..." ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Scrape username\n", "user_name = driver.find_element(By.XPATH,'((//*[@data-testid=\"UserName\"])//span)[last()]').text\n", "\n", "# Scrape 25 tweets with their dates\n", "articles = []\n", "tweets = []\n", "times=[]\n", "\n", "while True:\n", " time.sleep(1)\n", " article = driver.find_elements(By.TAG_NAME,'article')\n", " for a in article:\n", " if a not in articles:\n", " tweet = a.find_element(By.XPATH, './/*[@data-testid=\"tweetText\"]')\n", " articles.append(a)\n", " t = a.find_element(By.XPATH,'.//time')\n", " times.append(t.text)\n", " tweets.append(tweet.text)\n", " if len(tweets) >=25:\n", " break\n", " driver.execute_script(\"window.scrollBy(0,500);\") \n", "\n", " \n", "# Write scraped data in csv file\n", "data = {'User':user_name, 'Times':times,'Tweets':tweets}\n", "df = pd.DataFrame(data, columns=['User', 'Times','Tweets'])\n", "df.to_csv('tweets.csv', index=False)\n", "df = pd.read_csv('tweets.csv')\n", "df" ] }, { "cell_type": "code", "execution_count": 17, "id": "ee1a4bc0", "metadata": {}, "outputs": [], "source": [ "driver.quit()" ] }, { "cell_type": "code", "execution_count": null, "id": "f067e8ef", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "6c1e41b6", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "39e51d38", "metadata": {}, "source": [ "## Example 5: Scraping News: https://www.thenews.com.pk/today" ] }, { "cell_type": "code", "execution_count": 18, "id": "a23aef57", "metadata": {}, "outputs": [], "source": [ "from selenium.webdriver import Chrome\n", "from selenium.webdriver.chrome.service import Service\n", "from selenium.webdriver.chrome.options import Options\n", "from selenium.webdriver.common.by import By\n", "from selenium.webdriver.support.ui import WebDriverWait\n", "from selenium.webdriver.support import expected_conditions as EC\n", "import pandas as pd\n", "import time\n", "\n", "# Create an instance of webdriver and load the newspaper\n", "s = Service('/Users/arif/Documents/chromedriver')\n", "myoptions = Options()\n", "driver = Chrome(service=s, options=myoptions) \n", "driver.maximize_window()\n", "driver.get('https://www.thenews.com.pk/today') \n", "time.sleep(2)" ] }, { "cell_type": "code", "execution_count": null, "id": "a686eab6", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "84754e70", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 19, "id": "9d6b54e4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "https://www.thenews.com.pk/print/971449-shireen-asks-sc-to-take-notice-of-imran-s-phone-tapping\n", "https://www.thenews.com.pk/print/971615-gogi-pinky-economic-corruption-corridor-nawaz-made-cpec-imran-gpec-maryam\n", "https://www.thenews.com.pk/print/971591-amendments-to-nab-law-imran-files-appeal-in-sc-against-registrar-s-objections\n", "https://www.thenews.com.pk/print/971602-punjab-bypolls-imran-to-start-election-campaign-from-july-7\n", "https://www.thenews.com.pk/print/971539-imran-ismail-made-pti-s-additional-secretary-general\n" ] } ], "source": [ "# Create a list of all the URLs of your interest\n", "urls = []\n", "try:\n", " s = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT,\"Imran\"))) \n", " search_urls = driver.find_elements(By.PARTIAL_LINK_TEXT,\"Imran\")\n", " for i in search_urls:\n", " urls.append(i.get_attribute(\"href\"))\n", "except:\n", " print(\"I did not find it \") \n", "\n", "for url in urls:\n", " print(url)" ] }, { "cell_type": "code", "execution_count": null, "id": "29ae8a36", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "94a99fa3", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 20, "id": "f0025b16", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Shireen Mazari asks Supreme Court to take notice of Imran Khan’s ‘phone tapping’\n", "‘Gogi-Pinky Economic Corruption Corridor’: Nawaz made CPEC, Imran GPEC: Maryam\n", "Amendments to NAB law: Imran files appeal in SC against registrar’s objections\n", "Punjab bypolls: Imran to start election campaign from July 7\n", "Imran Ismail made PTI’s additional secretary general\n" ] } ], "source": [ "original_window = driver.current_window_handle\n", "news_articles = []\n", "authors = []\n", "headings = []\n", "for url in urls:\n", " driver.switch_to.new_window('tab')\n", " driver.get(url)\n", " try:\n", " heading = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR,\".detail-heading h1\"))) \n", " author = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR,\".category-source\")))\n", " article = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR,\".story-detail\")))\n", " headings.append(heading.text)\n", " news_articles.append(article.text)\n", " authors.append(author.text)\n", " except:\n", " pass \n", " driver.switch_to.window(original_window)\n", "\n", "for heading in headings:\n", " print(heading)\n" ] }, { "cell_type": "code", "execution_count": null, "id": "8032fae9", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "0c38410b", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 21, "id": "1e0e5c48", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
HeadingsAuthorsNews Articles
0Shireen Mazari asks Supreme Court to take noti...By Mumtaz AlviPTI leaders, Shireen Mazari and Fawad Chaudhry...
1‘Gogi-Pinky Economic Corruption Corridor’: Naw...By Our CorrespondentPML-N Vice President Maryam Nawaz addressing a...
2Amendments to NAB law: Imran files appeal in S...By Our CorrespondentISLAMABAD: Former prime minister and Pakistan ...
3Punjab bypolls: Imran to start election campai...By Our CorrespondentPTI Chairman Imran Khan speaks during a media ...
4Imran Ismail made PTI’s additional secretary g...By Our CorrespondentThe Pakistan Tehreek-e-Insaf on Monday appoint...
\n", "
" ], "text/plain": [ " Headings Authors \\\n", "0 Shireen Mazari asks Supreme Court to take noti... By Mumtaz Alvi \n", "1 ‘Gogi-Pinky Economic Corruption Corridor’: Naw... By Our Correspondent \n", "2 Amendments to NAB law: Imran files appeal in S... By Our Correspondent \n", "3 Punjab bypolls: Imran to start election campai... By Our Correspondent \n", "4 Imran Ismail made PTI’s additional secretary g... By Our Correspondent \n", "\n", " News Articles \n", "0 PTI leaders, Shireen Mazari and Fawad Chaudhry... \n", "1 PML-N Vice President Maryam Nawaz addressing a... \n", "2 ISLAMABAD: Former prime minister and Pakistan ... \n", "3 PTI Chairman Imran Khan speaks during a media ... \n", "4 The Pakistan Tehreek-e-Insaf on Monday appoint... " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = {'Headings':headings, 'Authors':authors, 'News Articles':news_articles}\n", "df = pd.DataFrame(data, columns=['Headings', 'Authors', 'News Articles'])\n", "df.to_csv('news.csv', index=False)\n", "df = pd.read_csv('news.csv')\n", "df" ] }, { "cell_type": "code", "execution_count": 22, "id": "98ae189b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'PTI leaders, Shireen Mazari and Fawad Chaudhry addressing a press conference in islamabad on July 4, 2022. Photo: Screengrab of a Twitter video. \\nISLAMABAD: Pakistan Tehreek-e-Insaf (PTI) Senior Vice-President and former human rights minister Dr Shireen Mazari said Monday the intelligence agencies illegally tap phones and the Supreme Court (SC) should take a suo motu notice of tapping then PM Imran Khan\\'s phone.\\nReferring to media reports, she said that another phone conversation on the secure line between Imran Khan and his principal secretary Azam Khan is also going to be leaked.\\nMazari said what is in the audio tape is not the issue, insisting the real issue was phone tapping. She, along with PTI leader Chaudhry Fawad Hussain, told a hurriedly-called news conference here that an audio tape of the former first lady is circulating, which should be brought to light after a forensic test. She also asked how much assistance was given by the US in phone tapping.\\nRelated Stories\\nPTI warns against leaking Imran Khan’s audio calls\\nGovt proposes forensic audit of Bushra Bibi’s audio\\nDr Mazari emphasised that the real issue is phone tapping. The government of former premier Benazir Bhutto was ousted in 1997 on the issue of phone tapping and the Supreme Court in its judgment held that phone tapping is illegal under Articles 8 and 14 of the Constitution. The court had said in its judgment that official or personal conversations cannot be recorded.\\nCiting an English daily, she pointed out that apart from this decision, there is a decision of Justice Saqib Nisar of 2015 in which one of the most interesting things was admission on part of country\\'s prime intelligence agency that it recorded 6,856 phone calls in the month of May alone.\\nShe said that intelligence agencies illegally tap phones because sensitive agencies have phone tapping technology. She remarked, “I ask why this series of illegal phone tapping continues despite Supreme Court orders as the secure line of Imran Khan\\'s house was tapped. The Supreme Court should take a suo motu notice as to which agencies are there that are, despite court orders, taking illegal steps and violating the apex court order”.\\nMazari contended that it has been reported that another audio is going to be leaked which is based on the conversation between Imran Khan and his principal secretary Azam Khan on the secure line. The former minister said if the audio is made public, it will not only violate the Supreme Court order, but also the Official Secret Act, and she will not remain silent on it.\\nThe purpose of such acts, she claimed, was to hide the conspiracy and the nation has accepted the American conspiracy, so the neutrals and those who brought them are doing such acts so that the nation\\'s attention is diverted from the issue.\\nShireen Mazari said that after ‘our successful rallies, such conspirators, their handlers, neutrals and those they have brought, are nervous and trying to divert the attention of the people from this conspiracy and the country\\'s complicated affairs in some way.\\nThe IMF, she noted, was also asking this government to hold accountability against corruption while they (rulers) are not getting a place to flee. “I appeal to the defence institutions of Pakistan as to why they are pushing Pakistan to such difficult situations from where it becomes very difficult to return. The date of elections should be announced so that the nation elects its representatives and then form policies for the betterment of the country,” she contended.\\nShe accused PMLN leader Maryam Nawaz of violating the Official Secret Act during her rallies every day, and wondered if this government and its handler are not violating the Constitution and law by showing official documents to a convicted person. “There are many similar questions that we want to ask neutrals and this government,” she said.\\nSpeaking on the occasion, PTI Senior Vice President Chaudhry Fawad Hussain said that the loadshedding crisis in this country is getting serious and now it is being said that loadshedding will take place even during Eid holidays, while the government has admitted that all plants are on imported fuel and they do not have money to buy fuel.\\nFawad said that the government has accepted all IMF demands to make petroleum products costlier, tax the public yet the IMF is not ready to pay, the IMF is saying it is hesitant to issue a package on changing anti-corruption laws.\\nThe government, he claimed, immediately accepted the tax on the people but stuck to the issue of not enacting anti-corruption laws which gives an idea of the mindset of this government.\\nHe alleged that the government changed the laws and gave itself a benefit of Rs1,100 billion as they gave themselves financial benefit under NRO, similarly Asif Zardari has been given NRO in the fake account case. “Therefore, Imran Khan says corruption makes your country poor and corruption worth billions of rupees of Sharif and Zardari family is hollowing out the roots of Pakistan,” he charged.\\nFawad also said that phone tapping is a very important matter and phone tapping is being done in Pakistan and there is no monitoring, these calls are edited, not put to forensic test, human rights are being violated, allegations are being levelled against people.\\nHe said that only yesterday, Farah Gujjar was accused by the PMLN of acquiring a plot in Faisalabad Industrial Zone at a price less than the market value, ‘while according to the documents we have, Ayaz Sadiq also acquired two plots at the same place, so Ayaz Sadiq also committed corruption’.\\nPTI leader noted that Farah Gujjar was reportedly being issued red warrants. He asked how warrants could be issued when no case was registered against her and the purpose of these false allegation campaign issued by the PMLN is only that they know that Imran Khan is the leader who has no lust for money.\\nFawad said that ‘once again we repeat that we want good relations with the US, Europe, Russia and Western countries but that does not mean that a country can tell us who will rule our country as we cannot allow this thing. “It does not mean that no one even invited you to the ceremony and still you go there forcibly,” he said.\\n“After the accident that happened to Khawaja Asif at the age of 70-72, he suffers from psychological problems and often talks nonsense. If he has any evidence of contact with Donald Lu, he should make it public,” he said. He also talked on how \\'rigging plan had been readied by PMLN leadership\\' for upcoming by-election.\\nMeanwhile, Minister for Information and Broadcasting Marriyum Aurangzeb Monday said PTI leaders Fawad Chaudhry and Shireen Mazari confirmed that Bushra Bibi is the head of PTI\\'s social media, generating a false narrative.\\nReferring to the news conference held earlier by these two PTI leaders, she said they confirmed Bushra Bibi was the ‘mastermind’ of the campaign of treason certificates and the drive against the institutions. “Fawad Chaudhry and Shireen Mazari have accepted that the audio is of Bushra Bibi and that ‘linking’ political opponents with treason, is her ‘opinion’.\\nThe minister contented that the campaign against institutions was being run by Bushra Bibi, adding it was proved that an immoral press conference with dirty-language speaking spokespersons was being done at her behest.\\n“Bushra Bibi is running a social media campaign against national institutions, the narratives of treason, external conspiracy while hiding in Bani Gala. Bushra Bibi is in the forefront and behind the drive to link political opponents with treason and bad-mouthing. She is the mastermind of the campaign against institutions,” the minister charged.\\nMarriyum alleged that Bushra Bibi fabricated the narrative of external conspiracy and treason to hide her corruption. Bushra Bibi campaign against political opponents, journalists and institutions.\\n“PTI admits to making treason cases to hide its corruption. The champions of the false narrative of conspiracy abroad have been caught apologising and cajoling the US. Imran Sahib is delivering \"bygones are bygones\" apology to the US,” she concluded. '" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['News Articles'][0]" ] }, { "cell_type": "code", "execution_count": null, "id": "f1061bcc", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "809330e5", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "ecfa7ff2", "metadata": {}, "source": [ "## Practice Problem: Scraping Houses Data: https://zameen.com\n", "- For machine learning tasks, we need to have following fields for a hundred thousand **houses** in Lahore and within cities different locations/societies\n", " - City\n", " - Location/Address\n", " - Covered Area\n", " - Number of Bedrooms\n", " - Number of Bathrooms\n", " - Price" ] }, { "cell_type": "code", "execution_count": null, "id": "8bce3dc0", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }