1.IndexError: list index out of range
try:
courseOverview = site.select('span[class="f-ib f-vam"]')[0].get_text()
course_Overview = site.select('div[class="f-richEditorText"]')[0].get_text()
syllabus = site.select('span[class="f-ib f-vam"]')[1].attrs['href']
course_Syllabus = site.select('div[class="f-richEditorText"]')[1].get_text()
preparatoryknowledge = site.select('span[class="f-ib f-vam"]')[2].get_text()
preparatory_knowledge = site.select('div[class="f-richEditorText"]')[2].get_text()
certificaterequirements = site.select('span[class="f-ib f-vam"]')[3].get_text()
certificate_requirements = site.select('div[class="f-richEditorText"]')[3].get_text()
referencematerial = site.select('span[class="f-ib f-vam"]')[4].get_text()
reference_material = site.select('div[class="f-richEditorText"]')[4].get_text()
commonproblem = site.select('span[class="f-ib f-vam"]')[5].get_text()
common_problem = site.select('div[class="f-richEditorText"]')[5].get_text()
item['courseOverview'] = courseOverview
item['course_Overview'] = course_Overview
item['syllabus'] = syllabus
item['course_Syllabus'] = course_Syllabus
item['preparatoryknowledge'] = preparatoryknowledge
item['preparatory_knowledge'] = preparatory_knowledge
item['certificaterequirements'] = certificaterequirements
item['certificate_requirements'] = certificate_requirements
item['referencematerial'] = referencematerial
item['reference_material'] = reference_material
item['commonproblem'] = commonproblem
item['common_problem'] = common_problem
items.append(item)
print(item)
except IndexError:
pass
使用try except()解决,过程一言难尽,一直以为是序列为空造成,但是序列不为空。后来发现以为是一个列表几个元素,实则几个元素是在同一个位子,于是,修改的地方是
result1 = soup.select('#content-section')
items = []
for site in result1:
这样列表里几个元素几个位置,加入判断语句,使位置不为空
if len(site.select('span[class="f-ib f-vam"]')) > 0:
2.TypeError: write() argument must be str, not bytes
line = json.dumps(items, ensure_ascii=False)
with open('course_conment.json', 'wb') as fp:
fp.write(line.encode('utf-8'))
原先就犯过这个错,没有记录,我使用的Python版本高,需要用wb而不是w
3.raise JSONDecodeError(“Extra data”, s, end)
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 61846 (char 61845)
出现这种错误,查资料修改
#读取json文件
def readExcel(file):
with open(file,'r',encoding='utf8') as fr:
data = fr.readlines()
return data
出现了错误
for key, value in list_item.items():
AttributeError: 'str' object has no attribute 'items'
网上搜索没有得到答案,我对我的JSON文件进行检查,发现我没有对内容进行过滤,还存在\n,\t这样的内容。我对JSON内容进行了过滤,去掉了\n\t。使用strip()去掉了开头和结尾的\n\t,但是字符串中间的\n和\ 没有被去掉,但是我已经可以将JSON文件成功转换为excel文件了(开心)。
4.我在JSON文件转换为Excel文件中。某一列始终没有内容。
由于当key 为teachers时,value为一个列表,但是我Print(value),没有出现东西,最后,我将其他的判断后,在输入可以得到,原因,在爬取的时候,teachers列表有时候不止一个。无法判断我要输入的是哪一个。