Ich habe ein Problem mit dem Versuch, einige Daten von verschiedenen Seiten zu verwerfen. Ich habe versucht, einige Lösungen googeln, aber überhaupt nicht funktioniert.Web Scraping nächste Seite
Mein Punkt Web-Schrott ist nur die Namen der Grafikkarten von dieser Website: „https://www.newegg.com/Product/ProductList.aspx?Submit=StoreIM&IsNodeId=1&bop=And&Depa=1&Category=38&Page=2&PageSize=12&order=BESTMATCH“
In erster Linie habe ich versucht, einen Code zu bauen, die nur mit einer der Seiten funktioniert. Und das funktioniert ziemlich gut.
#
from urllib2 import urlopen as uReq
from bs4 import BeautifulSoup as soup
import requests
import re
my_url = "https://www.newegg.com/Product/ProductList.aspx?Submit=StoreIM&IsNodeId=1&bop=And&Depa=1&Category=38&Page=2&PageSize=12&order=BESTMATCH"
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
containers = page_soup.findAll("div",{"class":"item-container"})
container = containers[0]
for container in containers:
title_container = container.findAll("a",{"class":"item-title"})
product_name = title_container[0].text
print("product_name: " + product_name)
#
Damit habe ich die Namen der Grafikkarte auf der Seite 2. Wenn ich es auf 1 am HTML umschalten kann ich die Namen der ersten bekommen als Gut.
#Ich habe versucht, eine Schleife zu machen, aber es scheint nur die erste Seite immer und immer wieder zurückzukehren.
#
i = 1
my_url = "https://www.newegg.com/Product/ProductList.aspx?Submit=StoreIM&IsNodeId=1&bop=And&Depa=1&Category=38&Page={}&PageSize=12&order=BESTMATCH".format(i)
while i <= 3:
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
# esse é o que vou usar para fazer o loop
containers = page_soup.findAll("div",{"class":"item-container"})
container = containers[0]
for container in containers:
title_container = container.findAll("a",{"class":"item-title"})
product_name = title_container[0].text
print("product_name: " + product_name)
i = i+1
#
Hat mir jemand kann dabei helfen? = D
PS: Sei frei, meinen Code zu ändern und eine bessere Lösung vorzuschlagen, Leute. PS 2: Python 3.5 bei Jupyter Lab.
Hey, @Shahin. Vielen Dank für Ihre Hilfe. Ja, es hat perfekt funktioniert! Ich kenne nicht alle Pakete, die Sie mir vorgeschlagen haben (lxml), also habe ich versucht, Google zu verstehen, um Ihren Code zu verstehen. Aber über meinen Code, könnten Sie mir erklären, was schief gelaufen ist? Ich kann nicht verstehen, warum es die erste Seite immer und immer wieder kratzte. Ich habe eine Schleife gewechselt, oder? BTW: Entschuldigung für Sie warten. Ich habe deinen Post gesehen, aber ich war bei der Arbeit und ich habe Python nicht dort, um es zu versuchen. = D –
Kommentar gelöscht. Vielen Dank. – SIM
Ich verbesserte den Code, um nach weiteren Details zu suchen: Ist das der bessere Weg? (Ich habe versucht, zwei Schleifen mit "for" zu machen ... es ist furchtbar, ohne Bildung zu zeigen) ------- für Container in supp.select (". Item-title"): drucken (" product_name: {} ". format (container.text)) für shipping_container in supp.select (". price-ship "): drucken (" shipping_const: {} ". format (shipping_container.text)) –