Nieuws is de beste manier om te weten te komen wat er wereldwijd gebeurt. Voor data-ingenieurs zijn nieuwsartikelen een van de beste manieren om onwerkelijke hoeveelheden gegevens te verzamelen. Meer gegevens betekent meer inzichten, en dat is de enige manier om onze technologie te innoveren en onze mensheid tot grotere hoogten te brengen dan ooit tevoren. Maar er is veel nieuws, en het is menselijkerwijs onmogelijk om alle gegevens handmatig te verzamelen. Wat is de beste manier om de gegevens automatisch te krijgen? Het antwoord is web scraping voor nieuwsartikelen met behulp van python.
In dit artikel zullen we een webscraper maken om de laatste nieuwsartikelen uit verschillende kranten te scrapen en op te slaan als tekst. We zullen de volgende twee stappen doorlopen om een diepgaande analyse te maken van hoe het hele proces in zijn werk gaat.
Spring gerust naar een willekeurige sectie voor meer informatie over het schrapen van nieuwsberichten met behulp van python.
Als we belangrijke informatie willen onttrekken aan een website of webpagina, is het belangrijk te weten hoe die website werkt. Wanneer wij met een willekeurige webbrowser (Chrome, Firefox, Mozilla, enz.) naar een bepaalde URL gaan, is die webpagina een combinatie van drie technologieën,
HTML (HyperText Markup Language): HTML definieert de inhoud van de webpagina. Het is de standaard opmaaktaal voor het toevoegen van inhoud aan de website. Als u bijvoorbeeld tekst, afbeeldingen of andere zaken aan uw website wilt toevoegen, helpt HTML u daarbij.
CSS (Cascading Style Sheets): Wordt gebruikt voor het stylen van webpagina's. CSS verzorgt alle visuele ontwerpen die u op een bepaalde website ziet.
JavaScript: JavaScript is het brein van een webpagina. JavaScript verwerkt alle logica en functionaliteit van de webpagina. Daardoor maakt het de inhoud en de stijl interactief.
Met deze drie programmeertalen kunnen we de aspecten van een webpagina creëren en manipuleren.
Ik veronderstel dat je de basis van een webpagina en HTML kent voor dit artikel. Sommige HTML-concepten zoals divs, tags, koppen, enz., kunnen erg nuttig zijn bij het maken van deze webscraper. Je hoeft niet alles te weten, maar alleen de basis van het ontwerp van een webpagina en hoe de informatie erin staat, en we kunnen aan de slag.
Python heeft verschillende pakketten waarmee we informatie van een webpagina kunnen schrapen. We gaan verder met BeautifulSoup omdat het een van de meest bekende en gebruiksvriendelijke Python-bibliotheken is voor web scraping.
BeautifulSoup is het beste in staat om de HTML-inhoud van een URL te parseren en deze te benaderen met tags en labels. Daarom zal het handig zijn om bepaalde stukken tekst uit de website te halen.
Met slechts 3-5 regels code kunnen we de magie doen en elk type tekst van onze website naar keuze van het internet halen, waaruit blijkt dat het een eenvoudig te gebruiken maar krachtig pakket is.
We beginnen bij de basis. Om het bibliotheekpakket te installeren, typt u het volgende commando in uw Python-distributie,
pip installeer beautifulsoup4
We zullen ook de 'requests module' gebruiken, omdat deze de HTML-code van elke pagina aan BeautifulSoup levert. Om deze te installeren, typt u het volgende commando in uw Python distributie,
pip installeert verzoeken
Met deze verzoekmodule kunnen we de HTML-code van de webpagina halen en ermee navigeren met het BeautfulSoup-pakket. De twee commando's die ons werk veel gemakkelijker zullen maken zijn
find_all(element tag, attribuut): Deze functie neemt tag en attributen als parameters en stelt ons in staat om elk HTML-element van een webpagina te lokaliseren. Het zal alle elementen van hetzelfde type identificeren. We kunnen in plaats daarvan find() gebruiken om alleen de eerste te vinden.
get_text(): Zodra we een bepaald element hebben gelokaliseerd, kunnen we met dit commando de tekst binnenin extraheren.
Om door de HTML-code van onze webpagina te navigeren en de elementen te vinden die we willen scrapen, kunnen we de optie 'element inspecteren' gebruiken door met de rechtermuisknop op de pagina te klikken of gewoon op Ctrl+F te drukken. U krijgt dan de broncode van de webpagina te zien.
Zodra we de interessante elementen vinden, krijgen we de HTML-code met de requests-module, en voor het extraheren van die elementen gebruiken we de BeautifulSoup.
Voor dit artikel gaan we uit van de Engelse krant EL Paris. We scrapen de titels van de nieuwsartikelen van de voorpagina en vervolgens de tekst.
Als we de HTML-code van de nieuwsartikelen inspecteren, zien we dat het artikel op de voorpagina een dergelijke structuur heeft,
The title has <h2> element with itemprop=”headline” and class=”articulo-titulo” attributes. It has an href attribute containing the text. So we will now extract the text using the following commands:
verzoeken importeren
van bs4 import BeautifulSoup
Zodra we de HTML-inhoud krijgen met de requests-module, kunnen we die opslaan in de coverpage-variabele:
# Request
r1 = requests.get(url)
r1.status_code
# We slaan in coverpage de inhoud van de coverpage op
coverpage = r1.content
Vervolgens definiëren we de soepvariabele,
# Soep maken
soup1 = BeautifulSoup(coverpage, 'html5lib')
In de volgende regel code lokaliseren we de elementen die we zoeken,
# Nieuws identificatie
coverpage_news = soup1.find_all('h2', class_='articulo-titulo')
Met final_all krijgen we alle voorkomens. Daarom moet het een lijst opleveren waarin elk item een nieuwsartikel is,
Om de tekst te kunnen extraheren, gebruiken we het volgende commando:
coverpage_news[4].get_text()
Als we de waarde van een attribuut (in ons geval de link) willen opvragen, kunnen we het volgende commando gebruiken,
coverpage_news[4]['href']
Zo krijgen we de link in platte tekst.
Als u alle concepten tot nu toe hebt begrepen, kunt u alle inhoud van uw keuze web scrapen.
De volgende stap bestaat uit het benaderen van de inhoud van elk nieuwsartikel met het href attribuut, het ophalen van de broncode om de paragrafen in de HTML code te vinden, en tenslotte het ophalen met BeautifulSoup. Het is hetzelfde proces als hierboven beschreven, maar we moeten de tags en attributen definiëren die de inhoud van het nieuwsartikel identificeren.
De code voor de volledige functionaliteit staat hieronder. Ik zal niet elke regel afzonderlijk uitleggen, aangezien de code van commentaar is voorzien; men kan het duidelijk begrijpen door die commentaren te lezen.
aantal_van_artikelen = 5
# Lege lijsten voor inhoud, links en titels
news_contents = []
list_links = []
lijst_titels = []
voor n in np.arange(0, number_of_articles):
# alleen nieuwsartikelen (er zijn ook albums en andere dingen)
if "inenglish" not in coverpage_news[n].find('a')['href']
ga verder
# De link van het artikel krijgen
link = coverpage_news[n].find('a')['href']
list_links.append(link)
# De titel krijgen
titel = coverpage_news[n].find('a').get_text()
list_titles.append(title)
# Het lezen van de inhoud (deze is verdeeld in paragrafen)
artikel = requests.get(link)
artikel_inhoud = artikel.inhoud
soup_article = BeautifulSoup(article_content, 'html5lib')
body = soup_article.find_all('div', class_='articulo-cuerpo')
x = body[0].find_all('p')
# De paragrafen verenigen
lijst_paragrafen = []
voor p in np.arange(0, len(x)):
alinea = x[p].get_text()
list_paragraphs.append(paragraph)
final_article = " ".join(list_paragraphs)
news_contents.append(final_article)
Laten we de geëxtraheerde artikelen in het volgende zetten:
# df_features
df_features = pd.DataFrame(
{'Article Content': news_contents
})
# df_show_info
df_show_info = pd.DataFrame(
{'Article Title': list_titles,
'Article Link': list_links})
df_features
df_show_info
Om een betere gebruikerservaring te definiëren, zullen we ook de tijd meten die een script nodig heeft om het nieuws te krijgen. We zullen hiervoor een functie definiëren en vervolgens aanroepen. Nogmaals, ik zal niet elke regel code uitleggen, want de code is becommentarieerd. Voor een goed begrip kunt u die commentaren lezen.
def get_news_elpais():
# url definition
url = "https://elpais.com/elpais/inenglish.html"
# Request
r1 = requests.get(url)
r1.status_code
# We'll save in coverpage the cover page content
coverpage = r1.content
# Soup creation
soup1 = BeautifulSoup(coverpage, 'html5lib')
# News identification
coverpage_news = soup1.find_all('h2', class_='articulo-titulo')
len(coverpage_news)
number_of_articles = 5
# Empty lists for content, links and titles
news_contents = []
list_links = []
list_titles = []
for n in np.arange(0, number_of_articles):
# only news articles (there are also albums and other things)
if "inenglish" not in coverpage_news[n].find('a')['href']:
continue
# Getting the link of the article
link = coverpage_news[n].find('a')['href']
list_links.append(link)
# Getting the title
title = coverpage_news[n].find('a').get_text()
list_titles.append(title)
# Reading the content (it is divided in paragraphs)
article = requests.get(link)
article_content = article.content
soup_article = BeautifulSoup(article_content, 'html5lib')
body = soup_article.find_all('div', class_='articulo-cuerpo')
x = body[0].find_all('p')
# Unifying the paragraphs
list_paragraphs = []
for p in np.arange(0, len(x)):
paragraph = x[p].get_text()
list_paragraphs.append(paragraph)
final_article = " ".join(list_paragraphs)
news_contents.append(final_article)
# df_features
df_features = pd.DataFrame(
{'Content': news_contents
})
# df_show_info
df_show_info = pd.DataFrame(
{'Article Title': list_titles,
'Article Link': list_links,
'Newspaper': 'El Pais English'})
return (df_features, df_show_info)
ProxyScrape is een van de meest populaire en betrouwbare proxy providers online. Drie proxy diensten omvatten dedicated datacenter proxy servers, residentiële proxy servers, en premium proxy servers. Dus, wat is de best mogelijke oplossing voor de beste HTTP proxy voor web scraping voor nieuwsartikelen met behulp van python? Alvorens die vragen te beantwoorden, is het het beste om de kenmerken van elke proxy server te bekijken.
Een dedicated datacenter proxy is het meest geschikt voor snelle online taken, zoals het streamen van grote hoeveelheden gegevens (qua omvang) van verschillende servers voor analysedoeleinden. Dit is een van de belangrijkste redenen waarom organisaties kiezen voor dedicated proxies voor het verzenden van grote hoeveelheden gegevens in korte tijd.
Een dedicated datacenter proxy heeft verschillende kenmerken, zoals onbeperkte bandbreedte en gelijktijdige verbindingen, dedicated HTTP proxies voor eenvoudige communicatie, en IP-authenticatie voor meer veiligheid. Met 99,9% uptime kunt u er zeker van zijn dat het dedicated datacenter altijd werkt tijdens elke sessie. Last but not least, ProxyScrape biedt uitstekende klantenservice en zal u helpen om uw probleem binnen 24-48 uur op te lossen.
Next is een residentiële proxy. residentiële een go-to proxy voor elke algemene consument. De belangrijkste reden is dat het IP-adres van een residentiële proxy lijkt op het IP-adres dat door de ISP wordt verstrekt. Dit betekent dat het verkrijgen van toestemming van de doelserver om toegang te krijgen tot zijn gegevens gemakkelijker zal zijn dan normaal.
De andere functie van ProxyScrape's residentiële proxy is een roterende functie. Een roterende proxy helpt u een permanente ban op uw account te voorkomen omdat uw residentiële proxy dynamisch van IP-adres verandert, waardoor het voor de doelserver moeilijk wordt om te controleren of u een proxy gebruikt of niet.
Afgezien daarvan zijn de andere kenmerken van een residentiële proxy : onbeperkte bandbreedte, samen met gelijktijdige verbinding, dedicated HTTP/s proxies, proxies op elk moment sessie vanwege 7 miljoen plus proxies in de proxy pool, gebruikersnaam en wachtwoord authenticatie voor meer veiligheid, en last but not least, de mogelijkheid om de landserver te veranderen. U kunt de gewenste server selecteren door de landcode toe te voegen aan de gebruikersnaamauthenticatie.
De laatste is de premium proxy. Premium proxies zijn hetzelfde als dedicated datacenter proxies. De functionaliteit blijft hetzelfde. Het belangrijkste verschil is de toegankelijkheid. Bij premium proxies wordt de lijst proxy (de lijst die proxies bevat) beschikbaar gemaakt voor elke gebruiker op ProxyScrape's netwerk. Daarom kost premium proxies minder dan dedicated datacenter proxies.
Dus, wat is de best mogelijke oplossing voor de beste HTTP proxy voor web scraping voor nieuwsartikelen met behulp van python? Het antwoord zou zijn "residentiële proxy." De reden is eenvoudig. Zoals hierboven gezegd, is de residentiële proxy een roterende proxy, wat betekent dat uw IP-adres dynamisch zou worden gewijzigd over een periode van tijd die nuttig kan zijn om de server te misleiden door het verzenden van een heleboel verzoeken binnen een klein tijdsbestek zonder het krijgen van een IP-blokkering.
Vervolgens zou het beste zijn om de proxy server te veranderen op basis van het land. U hoeft alleen het land ISO_CODE toe te voegen aan het einde van de IP-authenticatie of de authenticatie met gebruikersnaam en wachtwoord.
Voorgestelde lectuur:
De pythonbibliotheek heet "BeautifulSoup" en kan automatisch gegevens scrapen van elk nieuwsartikel. De enige vereiste is een basiskennis van HTML om in de broncode van de pagina de HTML-tag te vinden die de te scrapen gegevens bevat.
Het antwoord is dat het afhangt van de voorwaarden van de website. Maar de meeste nieuwsartikelen kunnen worden gescrapt omdat alle informatie bewust beschikbaar wordt gesteld aan het publiek. Alle openbare gegevens kunnen worden gescrapt zolang uw scrapingmethode de gegevens of de eigenaar van de website niet schaadt.
U kunt Google News of andere nieuwsartikelen scrapen met behulp van python met behulp van de pythonbibliotheek genaamd "BeautifulSoup". Installeer de bibliotheek en een betrouwbare residentiële proxy om IP-blokkering van de doelserver te voorkomen.
In dit artikel hebben we de grondbeginselen van web scraping gezien door de grondbeginselen van het ontwerp en de structuur van webpagina's te begrijpen. We hebben ook praktische ervaring opgedaan door gegevens uit nieuwsartikelen te halen. Web scraping kan wonderen doen als het goed wordt uitgevoerd. Er kan bijvoorbeeld een volledig geoptimaliseerd model worden gemaakt op basis van geëxtraheerde gegevens dat categorieën kan voorspellen en samenvattingen kan tonen aan de gebruiker. Het belangrijkste is om de vereisten te bepalen en de paginastructuur te begrijpen. Python heeft een aantal zeer krachtige maar eenvoudig te gebruiken bibliotheken voor het extraheren van de gegevens van uw keuze. Dat heeft web scraping erg gemakkelijk en leuk gemaakt.
Het is belangrijk op te merken dat deze code nuttig is voor het extraheren van gegevens van deze specifieke webpagina. Als we het van een andere pagina willen doen, moeten we onze code optimaliseren volgens de structuur van die pagina. Maar als we eenmaal weten hoe we ze moeten identificeren, is het proces precies hetzelfde.
Dit artikel hoopt de praktische aanpak van web scraping voor nieuwsartikelen met behulp van python grondig uit te leggen. Een ding om te onthouden is dat proxy een absolute noodzaak is voor web scraping. Het helpt IP-blokkades van de doelserver te voorkomen. ProxyScrape biedt een grote en betrouwbare residentiële proxy voor uw web scraping voor nieuwsartikelen met behulp van python projecten.