Ich möchte ein Skript schreiben, um eine Homepage-Links zu Social Media (twitter/facebook meist), und ich bin völlig stecken, da ich Python ziemlich neu bin.Holen Sie sich Links von der Homepage einer Website mit Python
Die Aufgabe, die ich erreichen möchte, besteht darin, die Website zu analysieren, die Social-Media-Links zu finden und sie in einem neuen Datenrahmen zu speichern, in dem jede Spalte die ursprüngliche URL, den Twitter-Link und den Facebook-Link enthält. Hier ist, was ich bisher von diesem Code für die New York Times Website haben:
from bs4 import BeautifulSoup
import requests
url = "http://www.nytimes.com"
r = requests.get(url)
sm_sites = ['twitter.com','facebook.com']
soup = BeautifulSoup(r.content, 'html5lib')
all_links = soup.find_all('a', href = True)
for site in sm_sites:
if all(site in sm_sites for link in all_links):
print(site)
else:
print('no link')
Ich habe einige Probleme mit zu verstehen, was die Schleife tut, oder wie man es für funktioniert, was ich brauche es. Ich hatte auch versucht, die Seite zu speichern, anstatt print(site)
zu tun, aber das hat nicht funktioniert ... Also dachte ich, ich würde um Hilfe bitten. Bevor ich gefragt habe, habe ich hier einige Antworten gegeben, aber niemand konnte mich dazu bringen, das zu tun, was ich tun musste.
Ihre 'if'-Anweisung macht nichts Sinnvolles. Es überprüft, ob jedes Element der Liste "sm_sites" in der lsit "sm_sites" steht, was eindeutig immer wahr und völlig irrelevant ist. Auf was sollte diese Bedingung achten? – jacoblaw
@jacoblaw Ich wollte etwas schreiben, das mich prüfen lässt, ob jede der Seiten in 'sm_sites' in' all_links' steht. Dann gibt es den zusätzlichen Schritt, den ich machen möchte (und habe keine Ahnung, wie man es in Python schreibt), dass ich den vollständigen Link zu ihrem Twitter und Facebook als Spalten in einem Pandas DF speichern möchte. Im Idealfall möchte ich, dass dieser Code diese Dinge für mehrere Websites ausführt (aber ich denke, dass das die Schleifen sind, also kann ich einfach eine Schleife darum schreiben). – rowbust