From f76408a90e97f9b45b4e6cd3774af20669d60956 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristi=C3=A1n=20Sokolsk=C3=BD?= Date: Fri, 6 Nov 2026 11:08:32 +0000 Subject: [PATCH] =?UTF-8?q?P=C5=99idat=20upraveny=5Fpubcrawler/parser.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- upraveny_pubcrawler/parser.py | 55 +++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 upraveny_pubcrawler/parser.py diff --git a/upraveny_pubcrawler/parser.py b/upraveny_pubcrawler/parser.py new file mode 100644 index 0000000..e433fb0 --- /dev/null +++ b/upraveny_pubcrawler/parser.py @@ -0,0 +1,55 @@ +from ...common.parser import clean + + +def parse_qa(response): + + + title = clean(" ".join(response.css("h1 ::text").getall())) + if not title: + raise ValueError("Chýba nadpis otázky (h1)") + + + question_node = response.css("div.pw_bc") + if not question_node: + raise ValueError("Nenašiel sa text otázky (div.pw_bc)") + question = clean(" ".join(question_node[0].css("p ::text, p::text").getall())) + if not question: + question = clean(" ".join(question_node[0].css("::text").getall())) + + + answer_node = response.css('[id^="comment-"]') + if not answer_node: + raise ValueError("Nenašla sa odpoveď (id^=comment-)") + answer = clean(" ".join(answer_node[0].css("div.ic_l p ::text, div.ic_l p::text").getall())) + if not answer: + answer = clean(" ".join(answer_node[0].css("div.ic_l ::text").getall())) + + if len(question) < 10 or len(answer) < 20: + raise ValueError(f"Príliš krátke: otázka={len(question)}, odpoveď={len(answer)}") + + return { + "title": title, + "question": question, + "answer": answer, + } + + +def parse_forum(response): + title = clean(" ".join(response.css("h1 ::text").getall())) + + posts = [] + for node in response.css('[id^="comment-"]'): + text = clean(" ".join(node.css("div.ic_l p ::text, div.ic_l p::text").getall())) + if not text: + text = clean(" ".join(node.css("div.ic_l ::text").getall())) + if text and len(text) > 30: + posts.append(text) + + if len(posts) < 2: + raise ValueError(f"Málo príspevkov vo vlákne: {len(posts)}") + + question = posts[0] + pairs = [] + for answer in posts[1:]: + pairs.append((question, answer)) + return title, pairs \ No newline at end of file