我試圖寫一個函數,零件編號,然後檢索從本網站的產品網頁鏈接:http://www.assmann-wsw.com爲什麼字符串比較「==」不起作用? Python的3.6
我使用BS4模塊解析網頁。做一個零件號搜索時 的網址如下這種結構:
「http://www.assmann-wsw.com/us/en/artikelfinder/?artnr=」 + PART_NUMBER +「& artnr物品搜索=找到+現在#SearchResult所」
此行收集了所有的零件編號在「TD」標籤。
all_artnr = soup.find_all('td', attrs={'class': 'artnr'})
有三種情況搜索部件編號時:
(1)。部件號不存在
(2)。部件號存在,它不是其他部件號的子字符串。
(3)。部件號存在,它是其他部件號的子字符串。
方案(1)和(2)很容易處理。在場景3中,網站將包含輸入部件號的部件號的所有產品網頁作爲子串返回。
我在想比較td標籤的文本和輸入零件編號。當它們匹配時,產品網頁將包含在該td標籤中。
下面是我有的代碼和它的輸出。 最後兩個輸出顯示匹配,但比較返回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。 –