又一次的记录

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列表有时候不止一个。无法判断我要输入的是哪一个。

基本上我已经实现了将所有爬取的内容以表格的形式呈现,并存入了MYSQL,下一阶段,对数据的分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值