Python 3.x 获取详细的零件信息

Python 3.x 获取详细的零件信息,python-3.x,web-scraping,beautifulsoup,Python 3.x,Web Scraping,Beautifulsoup,作为开场白,我在大学里做过一些编程,但那是大约13年前的事了,从那以后我再也不用做任何编程了。大约两个月前,我的老板问我是否对此感兴趣,我是否愿意解决公司的一些“基本”问题。我答应了,现在我来了。我们正在尝试做的是获取制造商零件号列表,并使用网络垃圾从互联网上获取详细信息。我试着一步一步地走。首先,我们的数据是在excel中的,我如何将其发送到python以使用它。通过一些自学应用程序和关于python 3的基础课程,我想到了以下几点: wb=load_workbook(filename="De

作为开场白,我在大学里做过一些编程,但那是大约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)
这部分对我有用。我现在有一个制造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-”,“-”,[“-”-”]-

这显然是印刷品的一小部分,但看起来都是这样

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

我相信['-']应该是我要寻找的值。

如果您需要的数据只能通过网站访问,那么删除它是正确的选择。我看不到您的代码中有任何明显的错误,但您可以通过以下方式自行调试:

  • 使用浏览器工具检查要删除的页面内容(右键单击->检查)
  • 将代码分成多个函数,并编写一些单元测试,以确保每个函数都达到预期效果
  • 还要注意,如果涉及到一些javascript,beautiful soup可能会失败(这里不是这样)
如果您仍然无法让它工作,您至少应该详细说明您得到的错误/意外行为以及URL(理想情况下为a),以获得更具体的答案