Miniobs rund um Waldbröl (Loser-Documentation)
Eine kleine, verwirrte Dokumentation
Eine Ausgabe wie in der folgenden HTML-Datei zu sehen:
html-Datei
... erzeuge ich wie folgt:
Julia-REPL Version 1.2.0 (2019-08-20)
using Cascadia
using Gumbo
using HTTP
using DataFrames
using CSV
# Variablen für Links
pagelinks = []
links = DataFrame(Link = String[], Titel = Link = String[], Beschreibung = String[])
url = "https://www.ebay-kleinanzeigen.de/s-heimarbeit-mini-nebenjobs/51545/c107l1538r20"
res = HTTP.get(url);
body = String(res.body);
html = parsehtml(body);
# Seiten-Links einlesen und in 'pagelinks' schreiben
push!(pagelinks,url)
n = eachmatch(sel"""[class="pagination-page"]""", html.root)
for i in 1:length(n)
if occursin(r"href",string(n[i])) == true
matchy = string(n[i])
# println("Fund! ",matchy)
suburl = replace(string(n[i]),r".*href=\"(.*)\"title.*" => s"\1")
println(suburl)
url = string("https://www.ebay-kleinanzeigen.de",suburl)
println()
println(url)
println()
push!(pagelinks,url)
end
end
# Einzellinks einlesen und in 'links' schreiben
for i in 1:length(pagelinks)
url = pagelinks[i]
println(url)
res = HTTP.get(url);
body = String(res.body);
html = parsehtml(body);
m = eachmatch(sel"""[class="ellipsis"]""", html.root)
for i in 1:length(m)
if occursin(r".*",string(m[i])) == true
matchy = string(m[i])
println("Fund! ",matchy)
text = replace(string(m[i]),r".*>(.*)</a>.*" => s"\1")
suburl = replace(string(m[i]),r".*href=\"(.*)\">.*" => s"\1")
suburl = string("https://www.ebay-kleinanzeigen.de",suburl)
println()
println(text)
println(suburl)
println()
push!(links,[suburl text ""])
# sleep(3)
end
end
sleep(2)
end
# Links auf Fehler checken
for i in 1:length(links[:,:Link])
link = links[i,:Link]
if occursin(r"[^a-zA-Z0-9_\-\/:\.]",link) == true
println("Zeile: ", i," ::=> ERROR!!!!")
println(link)
end
end
# Beschreibungen in 'links' einfügen
for i in 1:length(links[:,:Link])
sleep(2)
link = links[i,:Link]
println(link)
res = HTTP.get(link);
body = String(res.body);
html = parsehtml(body);
beschreibung = eachmatch(sel"""[id="viewad-description-text"]""", html.root)
beschreibung = replace(string(beschreibung[1]),r".*viewad-description-text\"(.*)" => s"\1")
links[i,:Beschreibung] = beschreibung
end
CSV.write("/home/heide/Dropbox/Julia-Einstieg/HTML-Scraping/minijobs-ebay.csv",links)
Jupyter-Notebook Python 3.7.3
#!/usr/bin/env python
# coding: utf-8
import pandas as pd
import re
links = pd.read_csv('/home/heide/Dropbox/Julia-Einstieg/HTML-Scraping/minijobs-ebay.csv')
head1 = '<!doctype html> <html lang="de"> <head> <meta charset="utf-8"> <meta name="description" content="Minijobs rund um Waldbröl"> <meta name="keywords" content="example, html, head, meta"> <link rel="stylesheet" href="example.css"> <link rel="start" href="https://wiki.selfhtml.org/wiki/HTML" title="HTML-Dokumentation"> <title>Exemplarische Kopfdaten</title> </head> <body>\n '
head2 = ' </body> </html>'
links_as_html = head1
for link, titel, beschreibung in links.itertuples(index=False):
beschreibung = re.sub(r'^>[\s]+',r'',beschreibung)
line = "<h1><a href=" + link + "\">" + titel + "</a></h1>\n<p><br><br>" + beschreibung + "</p><br>\n"
links_as_html = links_as_html + line
links_as_html = links_as_html + head2
html_file = open('/home/heide/Dropbox/Julia-Einstieg/HTML-Scraping/minijobs-ebay.html',"w")
html_file.write(links_as_html)
html_file.close()
Weitere (Folge-)* Maßnahmen
Die entstandene HTML-Datei lade ich mit meiner Software Jutoh2, erstelle ein neues E-Book, wobei ich Abschnitte mit Kennung <h1> und ein automatisches Inhaltsverzeichnis erzeugen lasse. Die Mobi-Datei speichere ich auf meiner Festplatte, rufe Calibre auf, öffne die Datei in Calibre und sende sie an meinen Kindle-E-Book-Reader.
Liest sich gut. Das Ergebnis, das Mobi-E-Book. Besser als meine kleine, dumme Dokumentation hier (die ich aber hinterlegen muss, weil ich sonst bei all meinen verschiedenen Arbeitsplätzen und unterschiedlichen Projekten den Faden verliere - den ich oft erst Wochen, wenn nicht gar Monate später wiederaufnehmen kann ;-)
* Leicht verdoppelmoppelt.**
** Aber nur ganz leicht.
Kommentare
Kommentar veröffentlichen