Ich habe eine Webseite mit beliebten Artikeln, die ich für jeden zitierten Webseiten-Hyperlink und den Titel des Artikels kratzen will.Scraping einer Webseite für Link-Titel und URLs mit BeautifulSoup
Die gewünschte Ausgabe meines Skripts ist eine CSV-Datei, die jeden Titel und den Artikelinhalt in einer Zeile auflistet. Wenn also 50 Artikel auf dieser Webseite vorhanden sind, möchte ich eine Datei mit 50 Zeilen und 100 Datenpunkten haben.
Mein Problem hier ist, dass die Titel der Artikel und ihre Hyperlinks in einem SVG-Container enthalten sind, der mich abschleudert. Ich habe BeautifulSoup für das Web-Scraping verwendet, bin mir aber nicht sicher, wie ich den Titel und den Hyperlink jedes Artikels auswählen soll. Jede und jede Hilfe wird sehr geschätzt.
import requests
from bs4 import BeautifulSoup
import re
res = requests.get('http://fundersandfounders.com/what-internet-thinks-based-on-media/')
res.raise_for_status()
playFile = open('top_articles.html', 'wb')
for chunk in res.iter_content(100000):
playFile.write(chunk)
f = open('top_articles.html')
soup = BeautifulSoup(f, 'html.parser')
links = soup.select('p') #i know this is where i'm messing up, but i'm not sure which selector to actually utilize so I'm using the paragraph selector as a place-holder
print(links)
Ich bin mir bewusst, dass dies in der Tat ist ein zweistufiger Projekt: die aktuelle Version von meinem Skript nicht durch die Liste aller Hyperlinks, die ich werde kratzen eigentliche Inhalt nicht iterieren. Das ist ein zweiter Schritt, den ich leicht alleine durchführen kann, aber wenn jemand das auch gerne schreiben möchte, dann ein großes Lob an Sie.
Vielen Dank für die schnelle Antwort. Welches Modul installiere ich (für Python3) um urllib.parse und urljoin zu verwenden? Ich kann es nicht finden. – dataelephant
@Harelephant 'urllib' ist eingebaut, es muss nicht installiert werden. – alecxe