Ich lerne gerade von einem Python-Tutorial von Udemy (total Newbie zu Python). Ich bin derzeit in einer schönen Suppe Abschnitt, wo wir mit einer Übung beschäftigt sind, um den Preis aus dem Buch des Autors auf Amazon zu kratzen. Mein Code ist unten:Python - Schöne Suppe Wählen Sie nur zurück []
import bs4, requests
url = 'https://www.amazon.com/Automate-Boring-Stuff-Python-Programming/dp/1593275994/'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
response = requests.get(url, headers=headers)
response.raise_for_status()
soup = bs4.BeautifulSoup(response.text, 'html.parser')
soup.select('#addToCart > a > h5 > div > div.a-column.a-span4.a-text-right.a-span-last > span.a-size-medium.a-color-price.header-price')
Wenn ich den Pfad des Elements des Preises kontrollieren, ich kann das sehen:
<span class="a-size-medium a-color-price header-price">
$25.45
</span>
Allerdings, wenn ich es kopieren und einfügen von der soup.select und führen Sie den Python-Befehl, ich bin nur mit einem [] dh 2 eckigen Klammern zurückgegeben. Ich sollte den Inhalt der zweiten Code-Box bekommen.
UPDATE: Während der Zeit, die ich die Frage eintippte, zeigte es das Ergebnis korrekt, der Inhalt der Box mit 25,45 $, aber 5 Minuten später ging es zurück, um nur das Ergebnis der [] Klammern zu erhalten. Ich bin hinter einem Proxy und habe versucht, ohne einen Proxy durchzugehen, ohne Ergebnis zu ändern. Ich bekomme auch keinen Fehler, wenn ich response.raise_for_status() mache. Bitte kann jemand helfen?
(Denken Sie daran, dass ich nicht die Absicht, da draußen jede kommerzielle Website zu screenen kratzen, würde ich sehr gerne meine Learnings zu Inhouse-Szenarien anwenden)
Vielen Dank!
Danke, tut dies –
soup.select ('span.a-size-Medium.Verfahren-color-price.header-Preis') arbeitet hat auch für mich funktioniert –