bei meinem Crawlerprojekt stehe ich vor der nächsten Herausforderung. Durch Data.fetcher() wird Link.crawler() aufgerufen und durch den dort enthaltenen Generator soll ein Link an die aufrufende Instanz übergeben werden. Wenn ich das ohne Klasse, nur mit Funktionen mache, funktioniert das. Sobald ich versuche den Code in Klassen zu strukturieren, bekomme ich die Meldung "Object of type 'generator' is not JSON serializable".
Code: Alles auswählen
class Link:
@staticmethod
def crawler(start_page=0):
for element in soup_link.select(".divLink"):
yield str(urljoin(url, element.attrs["href"]))
class Data:
@staticmethod
def fetcher():
url = Link.crawler(21)
print("URL aus Link.crawler():", url)
Code: Alles auswählen
URL aus Link.crawler(): <generator object Link.crawler at 0x0000021DED1FEBF8>
Code: Alles auswählen
Traceback (most recent call last):
File "C:/Users/Home/OneDrive/leasing_crawler/main.py", line 166, in <module>
crawler_test.fetcher()
File "C:/Users/Home/OneDrive/leasing_crawler/main.py", line 58, in fetcher
driver.get(url)
File "C:\Users\Home\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 333, in get
self.execute(Command.GET, {'url': url})
File "C:\Users\Home\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 319, in execute
response = self.command_executor.execute(driver_command, params)
File "C:\Users\Home\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 372, in execute
data = utils.dump_json(params)
File "C:\Users\Home\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\utils.py", line 33, in dump_json
return json.dumps(json_struct)
File "C:\Users\Home\AppData\Local\Programs\Python\Python36\lib\json\__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "C:\Users\Home\AppData\Local\Programs\Python\Python36\lib\json\encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Users\Home\AppData\Local\Programs\Python\Python36\lib\json\encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "C:\Users\Home\AppData\Local\Programs\Python\Python36\lib\json\encoder.py", line 180, in default
o.__class__.__name__)
TypeError: Object of type 'generator' is not JSON serializable