Ich versuche, eine Funktion zu schreiben, die eine Teilnummer nimmt und ruft dann seine Produktseite Link von dieser Website: http://www.assmann-wsw.comWarum Stringvergleich "==" nicht funktioniert? Python 3.6
ich das BS4 Modul bin mit der Webseite zu analysieren. Die URL dieser Struktur folgt, wenn eine Teilenummer Suche zu tun:
"http://www.assmann-wsw.com/us/en/artikelfinder/?artnr=" + part_number + "& artnr-search = finden + jetzt # Suchergebnis"
Diese Linie sammelt alle Teilenummern in 'td' tag .
all_artnr = soup.find_all('td', attrs={'class': 'artnr'})
Es gibt drei Szenarien, wenn eine Teilenummer suchen:
(1). Teilenummer existiert nicht
(2). Die Teilenummer existiert und es ist keine Teilzeichenkette anderer Teilenummern.
(3). Teilenummer existiert und es ist ein Teilstring anderer Teilenummern.
Die Szenarien (1) und (2) werden einfach gehandhabt. In Szenario 3 gibt die Website alle Produktwebseiten mit Teilenummern zurück, die die eingegebene Teilenummer als Teilzeichenfolge enthalten.
Ich dachte daran, den Text des td-Tags mit der Eingabe Teilenummer zu vergleichen. Wenn sie übereinstimmen, ist die Produktwebseite in diesem td-Tag enthalten.
Unten ist der Code, den ich habe und seine Ausgabe. Die letzten beiden Ausgaben zeigen eine Übereinstimmung, aber der Vergleich gibt false zurück. Bitte helfen Sie mir zu verstehen, was hier passiert. Vielen Dank.
import bs4
import requests
def get_pwp(pn):
home_page = "http://www.assmann-wsw.com/"
#url_p1_de = "http://www.assmann-wsw.com/wo/en/artikelfinder/?artnr="
url_p1_us = "http://www.assmann-wsw.com/us/en/artikelfinder/?artnr="
url_p2 = "&artnr-search=find+now#searchresults"
search_url = url_p1_us + str(pn) + url_p2
src = requests.get(search_url).content
soup = bs4.BeautifulSoup(src, 'lxml')
# product webpage
pwp = ''
all_artnr = soup.find_all('td', attrs={'class': 'artnr'})
# Part number doesn't exist
if len(all_artnr) == 0:
pwp = '#NA'
# Part number exists and it is not a substring of other part numbers.
elif len(all_artnr) == 2 or len(all_artnr) == 1:
pwp = home_page + all_artnr[0].find('a')['href']
# Part number exists and it is a substring of other part numbers.
else:
for artnr in all_artnr:
print(str(artnr.text), pn)
print(str(artnr.text) == pn)
if str(artnr.text) == str(pn):
pwp = home_page + artnrfind('a')['href']
break
return pwp
pwp = get_pwp("A-MCSP-80300")
print(pwp)
Output:
A‑MCSP‑80300‑R A-MCSP-80300
False
A‑MCSP‑80300‑R A-MCSP-80300
False
A‑MCSP‑80300/B A-MCSP-80300
False
A‑MCSP‑80300/B A-MCSP-80300
False
A‑MCSP‑80300/G A-MCSP-80300
False
A‑MCSP‑80300/G A-MCSP-80300
False
A‑MCSP‑80300/R A-MCSP-80300
False
A‑MCSP‑80300/R A-MCSP-80300
False
A‑MCSP‑80300/Y A-MCSP-80300
False
A‑MCSP‑80300/Y A-MCSP-80300
False
A‑MCSP‑80300 A-MCSP-80300
False
A‑MCSP‑80300 A-MCSP-80300
False
Process finished with exit code 0
Danke mhawke. –