2017-04-19 12 views
0

はじめに私は大学でプログラミングをしましたが、それは約13年前のことでした。以来、何もする必要はありませんでした。約2ヶ月前、私の上司は、私が興味を持っているかどうか、会社が持っているいくつかの「基本的な」問題に取り組んでいけたらと尋ねました。私はそう言った、そして今私はここにいる。私たちがやっていることは、製造者の部品番号のリストを取って、ウェブスクレイピングを使ってインターネットから詳細な情報を入手することです。私はこのステップを一歩一歩踏み出そうとしました。まず、私たちのデータが優れていたのですが、どうすれば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の部品番号すべての「長い形式」の説明を印刷することができました。パーツのすべての属性を分割して(パケットサイズ、抵抗、静電容量など)、フィルタリングすることができます。私が考えなければならない1つのアプローチは、長いフォーム記述(基本的には単に連結された文字列)を取り、それぞれの記述を私たちが探している部分に分割することです。

とにかく私がここで申し込んだのは、私がやったことをスクラップして別の角度にしようとしていても、少しの方向性があることを望みました。

私は、私はこの

のように見える「-frequency安定Ppm-」を取得しています何、このコードでエラーを受信して​​いない「 - 」]、[ ' - 最小動作温度C-表示数量「周波数安定度Ppm-」、「周波数安定度Ppm」、「周波数安定度Ppm」、「周波数安定度Ppm」、「周波数安定度Ppm」、「周波数安定度Ppm」、 、 ' - ']、[' - ']、[' - ']] -

これは明らかに印刷されたものの非常に小さい部分ですが、この。

私は[' - ']が私が探している価値であると信じています。

答えて

0

必要なデータがウェブサイトからのみアクセスできる場合は、それをスクラップするのが適切なオプションです。私はあなたのコード内の任意の明白なエラーが表示されていないが、あなたはおそらくによってそれを自分でデバッグすることができます:あなたは(右クリック - >検査)スクラップするページの内容を検査するには、ブラウザのツールを使用して

  • 各機能を確実にするための機能にコードを分離して、いくつかのユニットテストを書くには何を期待し、それ
  • にも関与して、いくつかのjavascriptがある場合に、美しいスープが失敗する可能性があることに注意(それはここではケースではありません)

まだ動作しない場合は、エラーまたは/予期せぬ挙動が得られ、より具体的な回答を得るためにはどのURL(理想的にはMCVE

関連する問題