Michael
Michael

Reputation: 239

Crawl links and title - storing in a dictionary with beautifulsoup

The goal is to crawl links of PDF files and the link title. Everythink should be stored in a dictionary like {"title": "link"}

My code is looking for PDF-File-Links, but the line for the titles isn't working. Only the very last title ist stored and the dictionary is empty. Thank for some advise.

import requests
from bs4 import BeautifulSoup
import re
from urllib.parse import urljoin

url = "http://www.staff.uni-giessen.de/partosch/unterlagen/"
r = requests.get(url, verify=True)
soup = BeautifulSoup(r.text, "html.parser")
links = soup.findAll('a', attrs={'href': re.compile("pdf")})

#example link
#<a href="Erstellen-Formular2007.pdf" title="Erstellen barrierearmer PDF-Formulare">Erstellen barrierearmer PDF-Formulare</a>

#print(soup)

linklist = []
titlelist = []
pdflist = {}

for link in links:
        crawledlinks = linklist.append(urljoin(url, link.get('href')))
        title = titlelist.append(link.get('title'))
        pdflist[title] = crawledlinks


#print(linklist)
#print(titlelist)
#print(pdflist)

Upvotes: 1

Views: 548

Answers (1)

Ajax1234
Ajax1234

Reputation: 71471

The PDF listing is the sixth ul on the page:

from bs4 import BeautifulSoup as soup
import requests
d = soup(requests.get('http://www.staff.uni-giessen.de/partosch/unterlagen/').text, 'html.parser')
new_data = dict([[i.contents[0]['href'], i.contents[-1]] for i in d.find_all('ul')[5].find_all('li')])

Output:

{
  "Formulare-JLU.pdf": " (21.6.2005/14.7.2005; vermutlich nicht mehr aktuell)",
  "Helpdesk.pdf": " (Februar 2007)",
  "CumTempore-HRZ-Service.pdf": " (Vortrag bei Cum tempore; 24.5.2007)",
  "CumTempore-IT-Beschaffung.pdf": " (Vortrag bei Cum tempore; 24.5.2007)",
  "IT-Beschaffung.pdf": " (Mai 2007)",
  "TdoT-20070621-Geschichte.pdf": " (Tag der offenen T\u00fcr 21.6.2007)",
  "TdoT-20070621-Service.pdf": " (Tag der offenen T\u00fcr 21.6.2007)",
  "Informationsmanagement.pdf": " (3.4.2011)"
}

Edit:

If you are attempting to scrape all links:

d = soup(requests.get('http://www.staff.uni-giessen.de/partosch/unterlagen/').text, 'html.parser')
result = dict([[f"http://www.staff.uni-giessen.de/partosch/unterlagen/{i.contents[0]['href']}", i.contents[-1]] for i in d.find_all('li') if i.contents[0]['href'].endswith('.pdf')])

Output:

{'http://www.staff.uni-giessen.de/partosch/unterlagen/antiplagiat.pdf': ' (Mai 2012)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/HS-RheinMain-20140129.pdf': ' (29.1.2014)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Medienwerkstatt-20140623.pdf': ' (23.6.2014)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/DFN61-20141015.pdf': ' (15.10.2014)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Erstellen-Formular2007.pdf': ' (Kurzanleitung für Word 2007, September 2011)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Erstellen-Dokumente-lang2007.pdf': ' (ausführliche Anleitung für Word 2007, Mai 2012)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Erstellen-Dokumente-kurz2007.pdf': ' (Kurzanleitung für Word 2007, April 2012)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/ZKI-Hessen-2012-Vortrag.pdf': ' (21. 11. 2012)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Erstellen-Formular2010.pdf': ' (Kurzanleitung für Word 2010, November 2014)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Erstellen-Dokumente-lang2010.pdf': ' (ausführliche Anleitung für Word 2010, November 2014)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Erstellen-Dokumente-kurz2010.pdf': ' (Kurzanleitung für Word 2010, November 2014)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/vortrag-partosch-DANTE2012.pdf': ' (7.3.2012)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/CiTavi-BibLaTeX.pdf': ' (7.1.2018)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/CiTavi-Word.pdf': ' (29.1.2017)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/http://www.dante.de/events/dante2012/Programm/Vortraege/vortrag-partosch.pdf': ' (Oktober 2002)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/ConTeXt-LaTeX-Tutorium.pdf': <a href="ConTeXt-LaTeX.zip" title="ConTeXt für LaTeX-Umsteiger: Vergleich von LaTeX- und ConTeXt-Strukturen; mit allen notwendigen Dateien">mit allen notwendigen Dateien</a>, 'http://www.staff.uni-giessen.de/partosch/unterlagen/context-latex2.pdf': <a href="ConTeXt-LaTeX2.zip" title="ConTeXt für LaTeX-Umsteiger: Vergleich von LaTeX- und ConTeXt-Strukturen; mit allen notwendigen Dateien">mit allen notwendigen Einzeldateien</a>, 'http://www.staff.uni-giessen.de/partosch/unterlagen/Formulare-JLU.pdf': ' (21.6.2005/14.7.2005; vermutlich nicht mehr aktuell)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Helpdesk.pdf': ' (Februar 2007)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/CumTempore-HRZ-Service.pdf': ' (Vortrag bei Cum tempore; 24.5.2007)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/CumTempore-IT-Beschaffung.pdf': ' (Vortrag bei Cum tempore; 24.5.2007)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/IT-Beschaffung.pdf': ' (Mai 2007)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/TdoT-20070621-Geschichte.pdf': ' (Tag der offenen Tür 21.6.2007)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/TdoT-20070621-Service.pdf': ' (Tag der offenen Tür 21.6.2007)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Informationsmanagement.pdf': ' (3.4.2011)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/PDF-Kurs.pdf': ' (27.10.1999; mit Sicherheit veraltet)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/PDF-Einfuehrung.pdf': ' (Mai 2003)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Vortrag-Archivierbarkeit.pdf': ' (18.4.2015)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Plone.pdf': ' (interne Weiterbildung Juli 2005)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/pythontex.pdf': <a href="pythontex-beispiele.zip" title="PythonTeX - Zusammenspiel von Python und LaTeX">PythonTeX - Zusammenspiel von Python und LaTeX (Beispiele)</a>, 'http://www.staff.uni-giessen.de/partosch/unterlagen/units.pdf': ' (30.8.2018)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/software-lizenzen.pdf': ' (Vortrag bei ZKI Hessen 1.10.2010)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/spss-verteilung-vortrag.pdf': ' (1.6.2011)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/muenchen.pdf': ' (September 2011)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/ZKI-SL-20140916.pdf': ' (14.9.2014)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Vortrag-SPSS.pdf': ' (14.4.2015)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/ZKI-SL-20150914.pdf': ' (14.9.2015)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/LaTeX_HTML1.pdf': ' (Vortragsfolien)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/LaTeX_HTML2.pdf': ' (Vortragsfolien)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Gleichzeitiges_Publizieren_in_HTML_und_LaTeX.pdf': ' (25.2.1998, wahrscheinlich total veraltet)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/LaTeX_HTML_Hyperlatex.pdf': ' (Vortragsfolien))', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Hyperlatex-Befehle.pdf': ' (2.10.1997; mit Sicherheit veraltet)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/hyperlatex.pdf': ' (25.2.1998, wahrscheinlich total veraltet)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/LaTeX_und_HTML-Verwandtschaften.pdf': ' (25.2.1998)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/TeX_Internet.pdf': ' (Vortragsfolien, März 1996)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/TeX-im-Internet.pdf': ' (2.10.1999; mit Sicherheit veraltet)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/LaTeX2_Mathematik.pdf': ' (Vortragsfolien, 23. Februar 1999)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Mathe-Beispiele.pdf': ' (30.10.2002)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/XML+TeX-Tutorium.pdf': ' (Oktober 2002)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/LaTeX-Buecher.pdf': ' (27.11.2002; mit Sicherheit nicht mehr aktuell)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/TeX-Einfuehrung.pdf': ' (Mai 2003)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/wissArbeiten.pdf': ' (September 2006)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/textkategorien.pdf': ' (14.9.2006)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Makros.pdf': ' (18.10.2006)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/ams-math.pdf': ' (7.3.2007; überarbeitet 6.1.2018)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Mathe-Beispiele-Wien.pdf': ' (25.2.2009, überarbeitet 6.1.2018)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/BibTeX.pdf': ' (3.3.2010)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/kriterien.pdf': ' (22.7.2010)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/BibTeX-Internet1.pdf': ' (25.9.2010)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/BibTeX-Internet2.pdf': ' (1.4.2011)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Vortrag-DANTE2014.pdf': <a href="Vortrag-DANTE2014.pdf" title="Anforderungen an wissenschaftliche Abschlussarbeiten">Anforderungen an wissenschaftliche Abschlussarbeiten - Vortrag bei DANTE 2014, 12. 4. 2014</a>, 'http://www.staff.uni-giessen.de/partosch/unterlagen/Vortrag-Glossar.pdf': ' (6.1.2018)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Abschlussarbeit-Anleitung.pdf': ' (Version 5.6.1, 28.3.2018)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Vortrag-Beamer.pdf': ' (7.1.2018', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Vortrag-Satzspiegel-alles.pdf': ' (5.1.2018)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Vortrag-Ueberschriften-alles.pdf': ' (5.1.2018)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/listen.pdf': <a href="listen-beispiele.zip" title="LaTeX für Abschlussarbeiten - Listen und Aufzählungen">LaTeX für Abschlussarbeiten - Listen und Aufzählungen (Beispiele)</a>, 'http://www.staff.uni-giessen.de/partosch/unterlagen/zeilenabstand.pdf': ' (8.4.2018)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/trennungen.pdf': ' (8.4.2018)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/awk.pdf': ' (Februar 1993)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/rechnen.pdf': ' (Juli 1993)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/wintast7.pdf': ' (1996; ist wahrscheinlich nur noch zum Teil gültig)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/dok-layout.pdf': ' (Oktober 2010)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Word2007_konfigurieren.pdf': ' (Oktober 2010)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Kochrezept.pdf': ' (10.11.2010)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Word-Dokumentvorlagen.pdf': ' (Juni 2012)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Tasten2010.pdf': ' (Januar 2017)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/Word_konfigurieren.pdf': ' (Januar 2017)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/XML-Kurs.pdf': ' (Ursprünglich: Unterlagen zu einem Tutorium bei der TeX-Tagung DANTE2001 am 28.2.2001 in Rosenheim)', 'http://www.staff.uni-giessen.de/partosch/unterlagen/XML-Einfuehrung.pdf': ' (Mai 2003; Februar 2004)'}

Upvotes: 1

Related Questions