这是another question的后续行动。感谢你目前的帮助。
我有一些代码可以循环浏览页面并创建一个数据框。我试图添加第三条信息,但是它包含在标题中,因此它只是返回空白。代码的td和h3部分中包含的级别信息。它返回错误“ AttributeError:'NoneType'对象没有属性'text'” 。如果我将level.h3.text更改为level.h3,它将运行,但是它将在数据框,而不仅仅是数字。
import urllib
import bs4 as bs
import pandas as pd
#import csv as csv
sauce = urllib.request.urlopen('https://us.diablo3.com/en/item/helm/').read()
soup = bs.BeautifulSoup(sauce, 'lxml')
item_details = soup.find('tbody')
names = item_details.find_all('div', class_='item-details')
types = item_details.find_all('ul', class_='item-type')
#levels = item_details.find_all('h3', class_='subheader-3')
levels = item_details.find_all('td', class_='column-level align-center')
print(levels)
mytable = []
for name, type, level in zip(names, types, levels):
mytable.append((name.h3.a.text, type.span.text, level.h3.text))
export = pd.DataFrame(mytable, columns=('Item', 'Type','Level'))
答案 0 :(得分:2)
尝试如下修改您的代码:
for name, type, level in zip(names, types, levels):
mytable.append((name.h3.a.text, type.span.text, level.h3.text if level.h3 else "No level"))
现在将在没有级别(没有标题)的情况下,将"No level"
(您可以使用"N/A"
,None
或任何您最喜欢的东西)添加为第三个值