Ниже код извлекает данные со страницы Volkswagen https://www.kununu.com/de/volkswagenconsulting/kommentare
Однако я повторяюсь с несколькими пробами / исключениями. Я хотел бы создать новый l oop, который извлекает данные в arbeitsatmosphare = [], vorgesetztenverhalten = [], kollegenzusammenhalt= []
без повторения кода. Вы можете помочь?
import requests
from bs4 import BeautifulSoup
import pandas as pd
import re
city = []
team = []
date = []
jobstatus=[]
overall=[]
satisfied=[]
company=[]
arbeitsatmosphare = []
vorgesetztenverhalten = []
kollegenzusammenhalt= []
lurl='https://www.kununu.com/de/volkswagenconsulting/kommentare'
with requests.Session() as session:
session.headers = {
'x-requested-with': 'XMLHttpRequest'
}
page = 1
while True:
print(f"Processing page {page}..")
url = f'{lurl}/{page}'
print(url)
response = session.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# satisfied.append(satisfiedText)
# firma = [x.text.strip() for x in soup.find_all('span', {'class': 'company-name'})]
articles = soup.find_all('article')
print("Number of articles: " + str(len(articles)))
for article in articles:
try:
arbeitsatmosphareText = article.find('span', text=re.compile(r'Arbeitsatmosphäre')).find_next(
'span').text.strip()
arbeitsatmosphare.append(arbeitsatmosphareText)
except:
arbeitsatmosphare.append('N/A')
try:
vorgesetztenverhaltenText = article.find('span',
text=re.compile(r'Vorgesetztenverhalten')).find_next(
'span').text.strip()
vorgesetztenverhalten.append(vorgesetztenverhaltenText)
except:
vorgesetztenverhalten.append('N/A')
try:
kollegenzusammenhaltText = article.find('span', text=re.compile(r'Kollegenzusammenhalt')).find_next(
'span').text.strip()
kollegenzusammenhalt.append(kollegenzusammenhaltText)
except:
kollegenzusammenhalt.append('N/A')
companyText = soup.find('span', {'class': 'company-name'}).text.strip()
company.append(companyText)
satisfiedText = soup.find('span', {'class': 'review-recommend-value'}).text.strip()
satisfied.append(satisfiedText)
overallText = soup.find('span', {'class': 'review-rating-value'}).text.strip()
overall.append(overallText)
page += 1
pagination = soup.find_all('div', {'class': 'paginationControl'})
if not pagination:
break
df = pd.DataFrame({'Arbeitsatmosphäre': arbeitsatmosphare,
'Vorgesetztenverhalten': vorgesetztenverhalten,
'Kollegenzusammenhalt': kollegenzusammenhalt,
'Overall': overall,
'company': company,
'satisfied': satisfied
})
print(df)