获取详细的零件信息

时间:2017-04-19 15:03:35

标签: python-3.x web-scraping beautifulsoup

作为一个介绍,我在大学做了一些编程,但那是大约13年前,我从此没有做过任何事情。大约2个月前,我的老板问我是否对此感兴趣,是否愿意解决公司的一些“基本”问题。我说是的,现在我在这里。我们要做的是获取制造商部件号列表,并使用webscraping从互联网获取详细信息。我试着一步一步走。首先我们的数据是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-',' - '],[' - ' ]] -

这显然只是印刷的一小部分,但它们看起来都像这样。

我相信[' - ']应该是我正在寻找的价值。

1 个答案:

答案 0 :(得分:0)

如果您需要的数据只能通过网站访问,那么抓取它是正确的选择。我没有在代码中看到任何明显的错误,但你可以自己调试它:

  • 使用浏览器工具检查要废弃的网页内容(右键单击 - >检查)
  • 将您的代码分成函数并编写一些单元测试以确保每个函数都能达到您的预期目标
  • 还要注意,如果涉及到一些javascript,美丽的汤可能会失败(这不是这里的情况)

如果仍然无法使其正常工作,您至少应该详细说明您获得的错误/意外行为以及哪个网址(理想情况为MCVE),以获得更具体的答案。