Webbskrapning, processen att extrahera data från webbplatser, har dykt upp som en kraftfull teknik för att samla information från internets stora vidd. I den här handledningen kommer vi att utforska olika Python-bibliotek och -moduler som vanligtvis används för webbskrapning och fördjupa oss i varför Python 3 är det föredragna valet för denna uppgift.
Viktiga paket och verktyg för Python Web Scraping
Den senaste versionen av Pytonorm , erbjuder en rik uppsättning verktyg och bibliotek som är speciellt utformade för webbskrapning, vilket gör det enklare än någonsin att hämta data från webben effektivt och effektivt.
Innehållsförteckning
- Modul för förfrågningar
- BeautifulSoup Library
- Selen
- Lxml
- Urllib-modul
- PyautoGUI
- Schema
- Varför Python Web Scraping?
Modul för förfrågningar
Förfrågningsbiblioteket används för att göra HTTP-förfrågningar till en specifik URL och returnerar svaret. Python-förfrågningar tillhandahåller inbyggda funktioner för att hantera både begäran och svar.
pip install requests>
Exempel: Göra en förfrågan
Python-förfrågningsmodulen har flera inbyggda metoder för att göra HTTP-förfrågningar till specificerad URI med hjälp av GET-, POST-, PUT-, PATCH- eller HEAD-förfrågningar. En HTTP-begäran är avsedd att antingen hämta data från en specificerad URI eller skicka data till en server. Det fungerar som ett begäran-svar-protokoll mellan en klient och en server. Här kommer vi att använda GET-förfrågan. De GET-metoden används för att hämta information från den givna servern med hjälp av en given URI. GET-metoden skickar den kodade användarinformationen som läggs till sidförfrågan.
array vs arraylistPytonorm
import requests # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # print content of request print(r.content)> Produktion

För mer information, se vår Handledning för Python-förfrågningar .
BeautifulSoup Library
Beautiful Soup tillhandahåller några enkla metoder och pytoniska fraser för att guida, söka och ändra ett analysträd: en verktygslåda för att studera ett dokument och ta bort det du behöver. Det krävs inte mycket kod för att dokumentera en ansökan.
Beautiful Soup konverterar automatiskt inkommande poster till Unicode och utgående formulär till UTF-8. Du behöver inte tänka på kodningar om inte dokumentet inte definierar en kodning och Beautiful Soup inte kan fånga en. Sedan är det bara att välja originalkodningen. Beautiful Soup sitter ovanpå kända Python-parsers som LXML och HTML, vilket låter dig prova olika analysstrategier eller byta hastighet för flexibilitet.
pip install beautifulsoup4>
Exempel
- Importera bibliotek: Koden importerar begärandebiblioteket för att göra HTTP-förfrågningar och BeautifulSoup-klassen från bs4-biblioteket för att analysera HTML.
- Göra en GET-förfrågan: Den skickar en GET-förfrågan till 'https://www.techcodeview.com
- Kontrollerar statuskod: Den skriver ut statuskoden för svaret, vanligtvis 200 för framgång.
- Parsar HTML : HTML-innehållet i svaret tolkas med BeautifulSoup och lagras i den variabla soppan.
- Skriva ut den förfinade HTML:en: Den skriver ut den förfinade versionen av det analyserade HTML-innehållet för läsbarhet och analys.
import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') print(soup.prettify())> Produktion
skillnaden mellan program och script

Hitta element efter klass
Nu skulle vi vilja extrahera lite användbar data från HTML-innehållet. Soppobjektet innehåller all data i den kapslade strukturen som kan extraheras programmatiskt. Webbplatsen vi vill skrapa innehåller mycket text, så låt oss nu skrapa allt detta innehåll. Låt oss först inspektera webbsidan vi vill skrapa.
I bilden ovan kan vi se att allt innehåll på sidan finns under div med klassinmatningsinnehåll. Vi kommer att använda klassen hitta. Denna klass kommer att hitta den givna taggen med det givna attributet. I vårt fall kommer det att hitta alla div som har klass som inträdesinnehåll.
Vi kan se att innehållet på sidan är under
märka. Nu måste vi hitta alla p-taggar som finns i den här klassen. Vi kan användahitta alla klass av BeautifulSoup.
Pytonorm import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') s = soup.find('div', class_='entry-content') content = s.find_all('p') print(content)> Produktion:

För mer information, se vår Python BeautifulSoup .
Selen
Selen är en populär Python-modul som används för att automatisera webbläsare. Det tillåter utvecklare att styra webbläsare programmatiskt, vilket möjliggör uppgifter som webbskrapning, automatisk testning och interaktion med webbapplikationer. Selenium stöder olika webbläsare, inklusive Chrome, Firefox, Safari och Edge, vilket gör det till ett mångsidigt verktyg för webbläsarautomatisering.
Exempel 1: För Firefox
I det här specifika exemplet dirigerar vi webbläsaren till Googles söksida med frågeparametern geeksforgeeks. Webbläsaren kommer att ladda den här sidan, och vi kan sedan fortsätta att interagera med den programmatiskt med Selenium. Denna interaktion kan innebära uppgifter som att extrahera sökresultat, klicka på länkar eller skrapa ut specifikt innehåll från sidan.
Pytonorm # import webdriver from selenium import webdriver # create webdriver object driver = webdriver.Firefox() # get google.co.in driver.get('https://google.co.in / search?q = geeksforgeeks')> Produktion
sträng ersätt allt java

Exempel 2: För Chrome
- Vi importerar webdriver-modulen från Selenium-biblioteket.
- Vi anger sökvägen till webbdrivrutinens körbara fil. Du måste ladda ner lämplig drivrutin för din webbläsare och ange sökvägen till den. I det här exemplet använder vi Chrome-drivrutinen.
- Vi skapar en ny instans av webbläsaren med hjälp av webdriver.Chrome() och skickar sökvägen till Chrome-drivrutinen som ett argument.
- Vi navigerar till en webbsida genom att anropa metoden get() på webbläsarobjektet och skicka webbsidans URL.
- Vi extraherar information från webbsidan med hjälp av olika metoder från Selenium. I det här exemplet hämtar vi sidtiteln med hjälp av title-attributet för webbläsarobjektet.
- Slutligen stänger vi webbläsaren med metoden quit().
# importing necessary packages from selenium import webdriver from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager # for holding the resultant list element_list = [] for page in range(1, 3, 1): page_url = 'https://webscraper.io/test-sites/e-commerce/static/computers/laptops?page=' + str(page) driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get(page_url) title = driver.find_elements(By.CLASS_NAME, 'title') price = driver.find_elements(By.CLASS_NAME, 'price') description = driver.find_elements(By.CLASS_NAME, 'description') rating = driver.find_elements(By.CLASS_NAME, 'ratings') for i in range(len(title)): element_list.append([title[i].text, price[i].text, description[i].text, rating[i].text]) print(element_list) #closing the driver driver.close()>
Produktion

För mer information, se vår Python Selen .
k klustringsalgoritm
Lxml
Lxml-modulen i Python är ett kraftfullt bibliotek för bearbetning av XML- och HTML-dokument. Den tillhandahåller en högpresterande XML- och HTML-analysfunktion tillsammans med ett enkelt och Pythonic API. lxml används flitigt i Python webbskrapning på grund av dess hastighet, flexibilitet och användarvänlighet.
pip install lxml>
Exempel
Här är ett enkelt exempel som visar hur man använder lxml-modulen för Python-webskrapning:
- Vi importerar html-modulen från lxml tillsammans med begärandemodulen för att skicka HTTP-förfrågningar.
- Vi definierar webbadressen till webbplatsen vi vill skrapa.
- Vi skickar en HTTP GET-förfrågan till webbplatsen med funktionen requests.get() och hämtar HTML-innehållet på sidan.
- Vi analyserar HTML-innehållet med funktionen html.fromstring() från lxml, som returnerar ett HTML-elementträd.
- Vi använder XPath-uttryck för att extrahera specifika element från HTML-trädet. I det här fallet extraherar vi textinnehållet i alla (ankare) element på sidan.
- Vi itererar över de extraherade länktitlarna och skriver ut dem.
from lxml import html import requests # Define the URL of the website to scrape url = 'https://example.com' # Send an HTTP request to the website and retrieve the HTML content response = requests.get(url) # Parse the HTML content using lxml tree = html.fromstring(response.content) # Extract specific elements from the HTML tree using XPath # For example, let's extract the titles of all the links on the page link_titles = tree.xpath('//a/text()') # Print the extracted link titles for title in link_titles: print(title)> Produktion
More information...>
Urllib-modul
Urllib-modulen i Python är ett inbyggt bibliotek som tillhandahåller funktioner för att arbeta med URL:er. Det låter dig interagera med webbsidor genom att hämta webbadresser (Uniform Resource Locators), öppna och läsa data från dem och utföra andra URL-relaterade uppgifter som kodning och analys. Urllib är ett paket som samlar flera moduler för att arbeta med webbadresser, till exempel:
- urllib.request för att öppna och läsa.
- urllib.parse för att analysera webbadresser
- urllib.error för de uppgivna undantagen
- urllib.robotparser för att analysera robot.txt-filer
Om urllib inte finns i din miljö, kör koden nedan för att installera den.
pip install urllib3>
Exempel
Här är ett enkelt exempel som visar hur man använder urllib-modulen för att hämta innehållet på en webbsida:
- Vi definierar webbadressen till webbsidan vi vill hämta.
- Vi använder urllib.request.urlopen()-funktionen för att öppna URL:en och få ett svarsobjekt.
- Vi läser innehållet i responsobjektet med metoden read().
- Eftersom innehållet returneras som byte, avkodar vi det till en sträng med metoden decode() med 'utf-8'-kodning.
- Slutligen skriver vi ut HTML-innehållet på webbsidan.
import urllib.request # URL of the web page to fetch url = 'https://www.example.com' try: # Open the URL and read its content response = urllib.request.urlopen(url) # Read the content of the response data = response.read() # Decode the data (if it's in bytes) to a string html_content = data.decode('utf-8') # Print the HTML content of the web page print(html_content) except Exception as e: print('Error fetching URL:', e)> Produktion

PyautoGUI
Pyautogui-modulen i Python är ett plattformsoberoende GUI-automatiseringsbibliotek som gör det möjligt för utvecklare att styra musen och tangentbordet för att automatisera uppgifter. Även om det inte är specifikt utformat för webbskrapning, kan det användas tillsammans med andra webbskrapningsbibliotek som Selenium för att interagera med webbsidor som kräver användarinput eller simulera mänskliga handlingar.
pip3 install pyautogui>
Exempel
I det här exemplet används pyautogui för att utföra rullning och ta en skärmdump av sökresultatsidan som erhålls genom att skriva en fråga i sökinmatningsfältet och klicka på sökknappen med Selenium.
Pytonorm import pyautogui # moves to (519,1060) in 1 sec pyautogui.moveTo(519, 1060, duration = 1) # simulates a click at the present # mouse position pyautogui.click() # moves to (1717,352) in 1 sec pyautogui.moveTo(1717, 352, duration = 1) # simulates a click at the present # mouse position pyautogui.click()>
Produktion
java concat sträng

Schema
Schemamodulen i Python är ett enkelt bibliotek som låter dig schemalägga Python-funktioner att köras med angivna intervall. Det är särskilt användbart vid webbskrapning i Python när du regelbundet behöver skrapa data från en webbplats med fördefinierade intervall, till exempel varje timme, dagligen eller veckovis.
Exempel
- Vi importerar de nödvändiga modulerna: schema, tid, förfrågningar och BeautifulSoup från bs4-paketet.
- Vi definierar en funktion scrape_data() som utför webbskrapningsuppgiften. Inuti den här funktionen skickar vi en GET-förfrågan till en webbplats (ersätt 'https://example.com' med webbadressen till webbplatsen du vill skrapa), analyserar HTML-innehållet med BeautifulSoup, extraherar önskad data och skriver ut den .
- Vi schemalägger funktionen scrape_data() att köras varje timme med hjälp av schedule.every().hour.do(scrape_data).
- Vi går in i en huvudslinga som kontinuerligt letar efter väntande schemalagda uppgifter med hjälp av schedule.run_pending() och sover i 1 sekund mellan iterationerna för att förhindra att slingan förbrukar för mycket CPU.
import schedule import time def func(): print('Geeksforgeeks') schedule.every(1).minutes.do(func) while True: schedule.run_pending() time.sleep(1)> Produktion

Varför Python3 för webbskrapning?
Pythons popularitet för webbskrapning beror på flera faktorer:
- Enkel användning : Pythons rena och läsbara syntax gör det enkelt att förstå och skriva kod, även för nybörjare. Denna enkelhet påskyndar utvecklingsprocessen och minskar inlärningskurvan för webbskrapningsuppgifter.
- Rikt ekosystem : Python har ett stort ekosystem av bibliotek och ramverk skräddarsydda för webbskrapning. Bibliotek som BeautifulSoup, Scrapy och Requests förenklar processen med att analysera HTML, vilket gör dataextraktion till en lek.
- Mångsidighet : Python är ett mångsidigt språk som kan användas för ett brett utbud av uppgifter utöver webbskrapning. Dess flexibilitet tillåter utvecklare att integrera webbskrapning sömlöst i större projekt, såsom dataanalys, maskininlärning eller webbutveckling.
- Samhällsstöd : Python har en stor och aktiv community av utvecklare som bidrar till dess bibliotek och ger stöd genom forum, handledning och dokumentation. Denna mängd resurser säkerställer att utvecklare har tillgång till hjälp och vägledning när de tar sig an utmaningar med webbskrapning.