wollen helfen? Hier sind Ihre Möglichkeiten:","Crunchbase","Über uns","Vielen Dank an alle für die großartige Unterstützung!","Schnelle Links","Partnerprogramm","Prämie","ProxyScrape Premium-Testversion","Proxy-Typen","Proxy-Länder","Proxy-Einsatzfälle","Wichtig","Cookie-Politik","Haftungsausschluss","Datenschutzbestimmungen","Bedingungen und Konditionen","Soziale Medien","Facebook","LinkedIn","Twitter","Quora","Telegramm","Diskord"," © Copyright 2024 - Thib BV | Brugstraat 18 | 2812 Mechelen | Belgien | VAT BE 0749 716 760"]}
Web Scraping für Stellenausschreibungen ist eine alternative Abkürzung für Arbeitsuchende, um eine Datenbank mit aktuellen Stellenangeboten zu erstellen. Nach Angaben von Randstad kann die durchschnittliche Stellensuche fünf bis sechs Monate dauern, vom Zeitpunkt der Bewerbung bis zur Besetzung einer Stelle. Was wäre, wenn Sie eine Lösung hätten, die Ihre Belastung verringern könnte?
Web Scraping für Stellenausschreibungen ist eine alternative Abkürzung für Arbeitsuchende, um eine Datenbank mit aktuellen Stellenangeboten zu erstellen. Nach Angaben von Randstad kann die durchschnittliche Stellensuche fünf bis sechs Monate dauern, vom Zeitpunkt der Bewerbung bis zur Besetzung einer Stelle. Was wäre, wenn es eine Lösung gäbe, die Ihnen die Mühe abnimmt, durch alle Jobportale zu surfen und das richtige auszuwählen, das zu Ihnen passt?
Dieser Artikel nimmt Sie mit auf eine Reise und erklärt, wie man Web Scraping für Stellenausschreibungen durchführt. Sie befinden sich also auf dem Arbeitsmarkt und versuchen, den besten Job zu finden. Aber Sie wollen klüger und nicht härter vorgehen. Warum bauen Sie nicht einen Web Scraper, der für Sie Stellenanzeigen sammelt und analysiert. Sobald Sie ihn eingerichtet haben, wird er Ihnen eine Fülle von Daten in einem schönen, aufgeräumten Format zur Verfügung stellen, so dass Sie sie nicht immer wieder manuell überprüfen müssen. Fangen wir an.
Web Scraping für Stellenausschreibungen ist die Lösung, die automatisch Daten von mehreren Stellenportalen sammelt und Ihre Zeit für das Abrufen von Daten von jeder Website reduziert. Ein solches Tool, das Ihnen eine vollständige Datenbank mit offenen Stellen zur Verfügung stellt, vereinfacht Ihre Aufgabe um ein Vielfaches. Sie müssen nur noch die für Sie passenden Stellen herausfiltern und mit dem Bewerbungsprozess fortfahren.
Sie befinden sich also auf dem Arbeitsmarkt und versuchen, die beste Stelle zu finden. Aber Sie wollen klüger und nicht härter vorgehen. Warum bauen Sie nicht einen Web Scraper, der Stellenanzeigen für Sie sammelt und analysiert? Sobald Sie ihn eingerichtet haben, wird er Ihnen eine Fülle von Daten in einem schönen, aufgeräumten Format zur Verfügung stellen, so dass Sie sie nicht immer wieder manuell überprüfen müssen. Fangen wir an.
[Haftungsausschluss! Viele Websites können das Scrapen von Daten von ihren Seiten einschränken. Je nachdem, wo und wie die Nutzer versuchen, die Informationen zu extrahieren, können sie sich rechtlichen Problemen ausgesetzt sehen. Man muss also äußerst vorsichtig sein, wenn man sich Websites ansieht, die ihre Daten beherbergen. Facebook, Linked In und Craiglist zum Beispiel haben manchmal etwas dagegen, wenn Daten von ihren Seiten abgegriffen werden. Wenn Sie also scrapen wollen, tun Sie das auf eigene Gefahr].
Dies wird ein sehr grundlegender Artikel sein, in dem wir die Grundlagen des Web Scraping sehen werden, indem wir einige hilfreiche Informationen über Jobs im Zusammenhang mit "Data Science" von indeed.com extrahieren. Wir werden ein erstaunliches Programm schreiben, das die Jobs mehrmals manuell aktualisiert. Einige nützliche Bibliotheken, die bei der Erstellung dieses Scrapers sehr nützlich sein werden, sind "requests" und "BeautifulSoup".
Werfen wir zunächst einen Blick auf die Beispielseite, die wir in der Tat extrahieren werden.
Die Art und Weise, wie die URL strukturiert ist, ist von Bedeutung:
Diese URL-Struktur wäre eine große Hilfe, wenn wir den Scraper weiter aufbauen und Daten von mehreren Seiten sammeln.
Chrome kann die HTML-Struktur der Seite untersuchen, indem es mit der rechten Maustaste darauf klickt und die Option "Element inspizieren" verwendet. Auf der rechten Seite erscheint ein Menü, das auch die Tags der verschachtelten Elemente anzeigt, und wenn Sie den Cursor auf diese Elemente setzen, wird dieser Teil des Bildschirms hervorgehoben.
Für diesen Artikel setze ich voraus, dass Sie die Grundlagen von HTML wie Tags, Divs usw. kennen, aber zum Glück müssen Sie nicht alles wissen. Sie müssen nur die Seitenstruktur und die Hierarchie der verschiedenen Komponenten verstehen.
Jetzt haben wir die Struktur der Seite analysiert. Dies wird uns helfen, den Code entsprechend dieser Informationen zu erstellen, um die Daten unserer Wahl herauszuziehen. Beginnen wir damit, unsere Bibliotheken zu importieren. Beachten Sie, dass wir hier auch "time" importieren, was hilfreich sein wird, um den Server der Website beim Abrufen von Informationen nicht zu überlasten.
Anfragen importieren
bs4importieren
von bs4 importieren BeautifulSoup
importiere pandas als pd
importiere Zeit
Wir werden zunächst die einzelne Seite anvisieren, um jede gewünschte Information zu entnehmen,
URL = "https://www.indeed.com/jobs?q=data+scientist+%2420%2C000&l=New+York&start=10"
#Durchführen einer Abfrage der oben angegebenen URL:
page = requests.get(URL)
#Angabe des gewünschten Formats von "page" unter Verwendung des html-Parsers - dies ermöglicht Python, die verschiedenen Komponenten der Seite zu lesen, anstatt sie als einen langen String zu behandeln.
soup = BeautifulSoup(page.text, "html.parser")
#Drucken der Suppe in einem besser strukturierten Baumformat, das das Lesen erleichtert
print(soup.prettify())
Die Verwendung von prettify erleichtert den Überblick über die HTML-Codierung der Seite und liefert eine Ausgabe wie diese,
Jetzt befinden sich alle Informationen über die Seite, die uns interessiert, in unserer Variablen "soup". Wir müssen mehr in den Code eindringen, um die verschiedenen Tags und Unter-Tags zu durchlaufen, um die erforderlichen Informationen zu erfassen.
Die fünf wichtigsten Punkte für jede Stellenausschreibung sind,
Stellenbezeichnung.Name des Unternehmens.Standort.Gehalt.Stellenbeschreibung.
Wenn wir uns die Seite ansehen, gibt es 15 Stellenausschreibungen. Daher sollte unser Code auch 15 verschiedene Elemente erzeugen. Wenn der Code jedoch weniger als diese Zahl liefert, können wir auf die Seite zurückgreifen und sehen, was nicht erfasst wird.
As can be seen, the entirety of each job posting is under <div> tags, with an attribute “class” = “row result.”
Further, we could also see that job titles are under <a> tags, with the attribute “title = (title)”. One can see the value of the tag’s attribute with tag[“attribute”], so I can use it to find each posting’s job title.
Zusammenfassend lässt sich sagen, dass die Funktion, die wir sehen werden, die folgenden drei Schritte umfasst,
Pulling out all the <div> tags with class including “row”.Identifying <a> tags with attribute “data-tn-element”:”jobTitle”For each of these <a> tags, find attribute values “title”
def extract_job_title_from_result(soup):
jobs = []
for div in soup.find_all(name="div", attrs={"class":"row"}):
for a in div.find_all(name="a", attrs={"data-tn-element":"jobTitle"}):
jobs.append(a["title"])
return(jobs)
extract_job_title_from_result(soup)
Dieser Code ergibt eine Ausgabe wie diese,
Getting company names can be a bit tricky because most of them are appearing in <span> tags, with “class”:” company”. They are also housed in <span> tags with “class”:” result-link-source”.
Wir werden if/else-Anweisungen verwenden, um die Unternehmensinformationen von jeder dieser Stellen zu extrahieren. Um die Leerzeichen um die Firmennamen bei der Ausgabe zu entfernen, werden wir inputting.strip() am Ende verwenden.
def extract_company_from_result(soup):
companies = []
for div in soup.find_all(name="div", attrs={"class":"row"}):
company = div.find_all(name="span", attrs={"class":"company"})
if len(company) > 0:
for b in company:
companies.append(b.text.strip())
else:
sec_try = div.find_all(name="span", attrs={"class":"result-link-source"})
for span in sec_try:
companies.append(span.text.strip())
return(companies)
extract_company_from_result(soup)
Locations are located under the <span> tags. Span tags are sometimes nested within each other, such that the location text may sometimes be within “class”:”location” attributes, or nested in “itemprop”:”addressLocality”. However a simple for loop can examine all span tags for text and retrieve the necessary information.
def extract_location_from_result(soup):
locations = []
spans = soup.findAll('span', attrs={'class': 'location'})
for span in spans:
locations.append(span.text)
return(locations)
extract_location_from_result(soup)
Das Gehalt ist der schwierigste Teil, der aus Stellenausschreibungen zu extrahieren ist. In den meisten Stellenausschreibungen werden überhaupt keine Gehaltsinformationen veröffentlicht, während es bei anderen, die dies tun, mehrere Stellen geben kann, an denen das Gehalt abgerufen werden kann. Wir müssen also einen Code schreiben, der mehrere Gehälter von mehreren Stellen abrufen kann, und wenn kein Gehalt gefunden wird, müssen wir einen Platzhalterwert "Nichts gefunden" für alle Stellen erstellen, die kein Gehalt enthalten.
Some salaries are under <nobr> tags, while others are under <div> tags, “class”:”sjcl” and are under separate div tags with no attributes. Try/except statement can be helpful while extracting this information.
def extract_salary_from_result(soup):
salaries = []
for div in soup.find_all(name="div", attrs={"class":"row"}):
try:
salaries.append(div.find('nobr').text)
except:
try:
div_two = div.find(name="div", attrs={"class":"sjcl"})
div_three = div_two.find("div")
salaries.append(div_three.text.strip())
except:
salaries.append("Nothing_found")
return(salaries)
extract_salary_from_result(soup)
Die letzte Aufgabe besteht darin, die Stellenzusammenfassung zu erhalten. Es ist jedoch nicht möglich, die Zusammenfassungen für jede einzelne Stelle zu erhalten, da sie nicht im HTML-Code einer bestimmten Indeed-Seite enthalten sind. Wir können jedoch einige Informationen über jede Stelle aus den zur Verfügung gestellten Informationen erhalten. Zu diesem Zweck können wir Selenium verwenden.
But let’s first try this using python. Summaries are located under <span> tags. Span tags are nested within each other such that the location text is within “class”:” location” tags or nested in “itemprop”:” adressLocality”. However, using a simple for loop can examine all span tags for text to retrieve the necessary information.
Verwandte Artikel
Wie man Twitter mit Python scrappt
Wie man Instagram mit Python scrappt
Wie man Reddit mit Python ausschöpft
In diesem Artikel haben wir gesehen, was Web Scraping ist und wie es in unserem täglichen Leben hilfreich sein kann, indem wir ein praktisches Beispiel für das Scraping von Jobdaten von den Webseiten von Indeed genommen haben. Bitte beachten Sie, dass sich die Ergebnisse, die Sie erhalten, von diesen unterscheiden können, da die Seiten dynamisch sind und sich die Informationen mit der Zeit ändern.
Web Scraping ist eine unglaubliche Technik, wenn sie richtig und entsprechend Ihren Anforderungen durchgeführt wird. Wir haben uns die fünf wichtigsten Aspekte jeder Stellenausschreibung angesehen und wie man sie extrahiert. Wenn Sie diesen Code selbst ausprobieren, werden Sie Daten von Stellenausschreibungen gescraped haben und müssen nicht mehr manuell nach den Stellen suchen, was erstaunlich ist. Die gleiche Technik kann auch auf andere Webseiten angewendet werden, aber deren Struktur kann sich unterscheiden. Daher muss man seinen Code entsprechend optimieren. Aber alle Grundlagen werden in diesem Artikel behandelt, so dass es keine Schwierigkeiten geben wird, auch andere Seiten zu scrapen.
Wenn Sie auf der Suche nach Proxy-Diensten sind, vergessen Sie nicht, einen Blick auf ProxyScrape Wohn- und Premium-Proxys.