作为一个介绍,我在大学做了一些编程,但那是大约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-',' - '],[' - ' ]] -
这显然只是印刷的一小部分,但它们看起来都像这样。
我相信[' - ']应该是我正在寻找的价值。
答案 0 :(得分:0)
如果您需要的数据只能通过网站访问,那么抓取它是正确的选择。我没有在代码中看到任何明显的错误,但你可以自己调试它:
如果仍然无法使其正常工作,您至少应该详细说明您获得的错误/意外行为以及哪个网址(理想情况为MCVE),以获得更具体的答案。