私は部品番号を受け取り、その後、このウェブサイトから、その製品のWebページのリンクを取得する関数を記述しようとしています:http://www.assmann-wsw.comなぜ文字列比較 "=="が機能しないのですか? Pythonの3.6
私は、Webページを解析するBS4モジュールを使用しています。パーツ番号検索実行時に URLは、この構造を、以下:
「http://www.assmann-wsw.com/us/en/artikelfinder/?artnr=」+ PART_NUMBER +「& artnr検索を= +見つける今#にsearchResults」
この行は、「TD」タグ内のすべての部品番号を収集し、 。
all_artnr = soup.find_all('td', attrs={'class': 'artnr'})
品番検索する際の3つのシナリオがあります
(1)。部品番号は存在しません
(2)部品番号が存在し、他の部品番号の部分文字列ではありません。
(3)。部品番号が存在し、他の部品番号の部分文字列です。
シナリオ(1)と(2)は簡単に処理されます。シナリオ3では、ウェブサイトは、入力部品番号を含む部品番号のすべての製品ウェブページを部分文字列として返す。
私は、tdタグのテキストを入力部品番号と比較することを考えていました。一致すると、そのWebページはそのtdタグに含まれます。
以下は私が持っているコードとその出力です。 最後の2つの出力は一致を示しますが、比較結果はfalseを返します。 ここで何が起こっているのか理解してください。ありがとうございました。
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
をあなたはmhawkeありがとうございます。 –