Недопустимый атрибут encoding в функции open() (для файлов)
Я начал изучать программирование, и мой первый язык - Python. В качестве практического упражнения я хотел создать Crawler для веб-сайта.
Для этого я создал класс для просканированных элементов (в этом случае - информация о задании). И еще один для выполнения функции скручивания. Проблема в том, что когда я хочу записать просканированные данные в CSV, я получаю ошибку кодирования. Но когда я попытался определить это, я получил следующую ошибку:
Blockquote TypeError: 'encoding' является недопустимым аргументом ключевого слова для этой функции
Любые предложения, почему атрибут отсутствует? Я очень благодарен за любую помощь. Найдите код ниже:
# encoding=utf-8
import requests
from bs4 import BeautifulSoup
import time
import csv
starturl = "https://www.gulp.de/gulp2/projekte/suche?0"
class Job():
def __init__(self, veroeffentlicht, startdatum, ort, titel, link, beschreibung):
self.veroeffentlicht = veroeffentlicht
self.startdatum = startdatum
self.ort = ort
self.titel = titel
self.link = link
self.beschreibung = beschreibung
class Crawler():
def crawl(self):
jobs = []
url = starturl
counter = 0
r = requests.get(url)
doc = BeautifulSoup(r.text, "html.parser")
jobs_gesamt = "HIER NOCH EINFÜLLEN doc.select()..."
while counter < 3: # len(str(doc.select(".next")[1])) > 100:
time.sleep(2)
r2 = requests.get(url)
doc = BeautifulSoup(r2.text, "html.parser")
for li in doc.select(".searchresult li"):
veroeffentlicht = li.select_one(".date-listed").text
startdatum = li.select_one(".date-start").text
ort = li.select_one(".location").text
titel = li.select_one(".title").text
link = li.select_one(".title").attrs["href"]
beschreibung = li.select(".row .medium-9 .row")[1].select_one("p").text
job = Job(veroeffentlicht, startdatum, ort, titel, link, beschreibung)
jobs.append(job)
print("{0} von {1} Jobs in list...".format(len(jobs), jobs_gesamt))
counter += 1
url = "https://www.gulp.de/gulp2/projekte/suche?0-{0}.ILinkListener-projectSearch-resultListContainer-outerContainer-pagingNavigatorBottom-next".format(
counter) # + str(doc.select(".next")[1].attrs["href"])
print(url)
print("!!!Done!!!")
print(len(str(doc.select(".next")[1])))
print("Gescannte URL's: {0}".format(counter))
with open('./export.csv', 'w', encoding='utf-8') as exportfile:
writer = csv.writer(exportfile, delimiter=';', quotechar='"', quoting=csv.QUOTE_MINIMAL)
for job in jobs:
writer.writerow([job.ort, job.titel, job.link, job.beschreibung, job.startdatum, job.veroeffentlicht])
crawler = Crawler()
crawler.crawl()