我是靠谱客的博主 暴躁大树,最近开发中收集的这篇文章主要介绍beautifulsoup爬取网页中的表格_PYTHON爬取数据储存到excel,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

56280645c8bf41fe8ed866709fc80294.gif 1c67b413502c453cf8d77c6ba928d652.gif PYTHON爬取数据储存到excel

大家周末好呀,我是滑稽君。前两天上网课时朋友发来消息说需要爬取一些数据,然后储存到excel里。记得我公众号里发过关于爬虫的文章,所以找我帮个忙。于是滑稽君花时间研究了一下完成了这个任务。那本期滑稽君就与大家分享一下在爬取完数据之后,如何储存在excel里面的问题。

先说一下我的大概思路。因为之前已经写了一些爬虫工具,我们稍加修改就可以直接使用。重点是数据如果储存到excel里,并且实现自动换行。没有人的数据是全部列在一行的。根据我大PYTHON“除了不会生孩子,其他的什么都会”定理。在查找资料时,我'顺理成章'的找到了“xlwt”这样一个python用来与excel玩耍的库。那它都能干啥呢?它可以实现创建表单、写入指定单元格、指定单元格样式等人工实现的功能,一句话就是人使用excel实现的功能,这个扩展包都可以实现。我们以之前爬取中国大学排名的代码为例子。

源代码:

import requestsfrom bs4 import BeautifulSoupimport bs4import xlwtdef getHTMLText(url):  #抓取网页    try:        r = requests.get(url, timeout = 30)  #设置超时时间为30秒        r.raise_for_status()  #异常情况        r.encoding = r.apparent_encoding  #替换编码        return r.text    except:        return ""def fillUnivList(ulist, html):  #提取关键信息添加到列表(核心功能)    soup = BeautifulSoup(html, "html.parser")    for tr in soup.find('tbody').children:   #tr的子标签里可能含有字符串,影响我们抓取下一所大学的信息        if isinstance(tr, bs4.element.Tag):  #我们过滤掉非标签信息的其他信息            tds = tr('td')  #将所有的td标签存为新的tds列表            ulist.append([tds[0].string,tds[1].string,tds[2].string,tds[3].string])            #抓取标签之间的内容,这一步我们可以控制想要抓取的信息#重点内容开始,写入excel,及自动换行def printUnivList(ulist, num):    workbook = xlwt.Workbook()    #创建工作表    # 创建工作表worksheet,填入表名    worksheet = workbook.add_sheet('中国排名爬取')    h=0 #设置变量h来代替行数    #print("{:^10}tt{:^6}tt{:^10}tt{:^10}".format("排名","学校名称","省份","总分"))    for i in range (num):        u = ulist[i]        #print("{:^10}tt{:^6}tt{:^10}tt{:^10}".format(u[0], u[1], u[2], u[3]))        # 在表中写入相应的数据,        worksheet.write(h, 0, u[0]) #排名        worksheet.write(h, 1, u[1]) #学校        worksheet.write(h, 2, u[2]) #所在地        worksheet.write(h, 3, u[3]) #综合        h=h+1    # 保存表    workbook.save('hello2.xls')               def main():    uinfo = []    url =  'http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html'    html = getHTMLText(url)    fillUnivList(uinfo, html)    printUnivList(uinfo, 549)#想打印多少数据自己输入num的值main()

d639474250729e6cdce44173074c1a2f.png

可以看到,31-32行代码中我们把爬来的数据放入列表,然后打印出来。我们现在需要把列表里的值打印到excel单元格中 。 worksheet.write(0, 0, 'hello world')的功能就是在第一行第一列插入'hello world'。前两个数字分别代表行和列。大家记住他这里是从0开始算的。我们期望打印出排名、学校、所在地、综合评分这4个信息。也就是说我们在输入4次之后需要换行来输入下一所学校的基本信息。怎么解决呢?

我们定义一个变量h=0,让它代表行,打印4条信息为一个循环,每循环一次我们让h+1以此来实现我们自动换行的功能。到处我们需要的功能都实现了,运行可以看到当前目录下出现了一个excel表格。打开可以看到里面就是我们想要的信息。我们总共爬取了500多条学校的信息。这要是一条条的人工输入得到什么时候。还好我们有python,我们只需编写好代码,剩下的体力活都交给python就OK啦。

9de432bd76ba252f2b04c65a99a184e7.png

a8bf2253785f406db738a69926844d17.gif eb7233df85b07d55b2ac4acce8a9e1c9.png

如果你的python环境里没有这个第三方库,你还需要做的一件事就是打开CMD,输入'pip install xlwt'。

e040f990556bc0f7ff5cefac0a698851.gif

爬取中国大学排名

最后

以上就是暴躁大树为你收集整理的beautifulsoup爬取网页中的表格_PYTHON爬取数据储存到excel的全部内容,希望文章能够帮你解决beautifulsoup爬取网页中的表格_PYTHON爬取数据储存到excel所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部