2017-04-19 160 views
0

作爲一個介紹,我在大學做了一些編程,但那是大約13年前,我從來沒有做過任何事情。大約兩個月前,我的老闆問我是否對此感興趣,如果我願意爲公司的一些「基本」問題工作。我說是的,現在我在這裏。我們所要做的是拿出製造商部件號列表,並使用網頁瀏覽從互聯網上獲取詳細信息。我試圖一步一步地走下去。首先是我們的數據是在Excel中,我如何獲得它到Python來使用它。通過一些自學習應用程序和python 3的基本課程,我想出了以下內容:獲得詳細的零件信息

wb=load_workbook(filename="Description.xlsx") 
sheet=wb["MFG PN"] 

mfgpn=[] 
for col in sheet["A"]: 
    mfgpn.append(col.value) 

這部分工作適合我。我現在有一個我們擁有的mfg pn的列表(大約30k)我的代碼的其餘部分使用BeautifulSoup來嘗試創建一個表(嘗試失敗)。我的代碼看起來像這樣。

for html in range(len(mfgpn)): 
    try: 
     squirrel=urlopen("http://www.vyrian.com/parts.html?mfgPartNo="+str(mfgpn[html])) 
     bsObj=BeautifulSoup(squirrel,"html.parser") 
     Headers=[th.getText() for th in bsObj.findAll("tr", limit=2)[1].findAll('th')] 
     Rows=bsObj.findAll('tr') 
     PartData=[[td.getText() for td in Rows[i].findAll('td')] for i in range(len(Rows))] 
     print(PartData) 
    except: 
     (AttributeError, TypeError, NameError) 
     pass 

現在我已經嘗試了其他幾種方法,但都不成功,所以對我的問題。有沒有更好的方法來解決這個問題,然後刮桌子。我已經能夠打印所有30k零件編號的「長表格」描述。我們希望零件的所有屬性都被打破,以便我們可以過濾它們(包尺寸,電阻,電容等)。我還沒有研究過哪種方法,我認爲也許我應該採取長形式的描述(基本上是串聯的字符串),並將每個描述分解成我們正在尋找的部分。

無論如何我在這裏註冊希望我能得到一個小方向,即使它是廢除我所做的,並嘗試一個不同的角度,這將是很好的。

我沒有收到一個錯誤與此代碼,什麼我得到這個樣子的

「 - 頻率穩定性Ppm-」,「 - 」],[' - 最低工作溫度C-顯示參數 - 頻率穩定性Ppm-',' - 顯示數量 - 頻率穩定性Ppm-',' - 頻率穩定性Ppm-',' - '],['顯示數量 - 頻率穩定性Ppm-',' - 頻率穩定性Ppm-' ,' - '],[' - 頻率穩定性Ppm-',' - '],[' - ']] -

這顯然是印刷品的一小部分,但它看起來都很像這個。

我相信[' - ']應該是我正在尋找的值。

回答

0

如果您需要的數據只能通過網站訪問,那麼刮取它是正確的選擇。我沒有看到你的代碼中的任何明顯的錯誤,但你也許可以通過自己調試它:

  • 使用瀏覽器工具來檢查你想放棄的網頁的內容(右鍵 - >檢查)
  • 你的代碼中分離到的功能和寫一些單元測試,以確保每個功能做了你指望它什麼
  • 也注意到,如果有涉及到一些JavaScript美麗的湯可能會失敗(這是不是這裏的情況)

如果仍然無法正常工作,至少應該詳細說明錯誤或/意外的行爲,並獲得哪些網址(最好是MCVE),以獲得更具體的答案。