requests作为python第三方库,为用户爬取网页内容省下很多力气

BeautifulSoup同样也是python第三方库,它可以将用requests获取到的网页内容美化,也就是做成一碗“美味的汤”

目标:爬取2015年-2020年中国大学排名并写入csv文件中

思路:利用requests获取网页内容,再利用beautifulsoup对爬到的网页做处理,最终得到想要的数据

废话不多说,现在就开始做

首先找到我们要爬取的网页地址:https://www.shanghairanking.cn/
点击中国大学排名2020进入排名网址
选择年份-2015-

我们可以看到现在的排名情况:

按键盘上的F12,查看网页元素,点击选取页面中的元素

用鼠标点击第一个大学的排名

我们发现下方td被标记,也就是说,当前元素在网页中的位置在td的标签下,我们再重复上一个过程,但将鼠标点击到学校名称上

我们发现,大学的名称也是在td标签内,那么我们可以得到结论,每一个大学的信息都在td内,而每个大学都在一个tr标签内,那么同时可以发现,我们要找的所有tr都在一个tbody内

找到我们的元素位置之后我们就可以开始写代码了!
打开cmd,安装requests库:pip install requests
安装bs4库:pip install bs4
打开python编译器
添加库:

import requests
from bs4 import BeautifulSoup
import bs4
import csv

那么接下来进行第一步:获取网页内容

首先写一个函数getHTMLText

def getHTMLText(url):#尝试获取网页内容try:r=requests.get(url)#获取网页访问状态r.raise_for_status()#将编码方式改为中文r.encoding=r.apparent_encoding#返回得到的网页内容return r.textexcept:#若获取失败则返回字符串return '获取网页失败'

得到网页内容后,就要对网页内容进行筛选获取到想得到的信息

def catchData(ulist,html):#利用BeautSoup对获取到的网页进行处理soup=BeautifulSoup(html,'html.parser')#我们找到tbody的孩子标签,也就是trfor tr in soup.find('tbody').children:#获取tr下的td标签内容,由于有多个td,所以将得到一个列表if isinstance(tr,bs4.element.Tag):tds=tr('td')#将得到的td标签中的文字分别添加到ulist列表中ulist.append([tds[0].text.strip(),tds[1].text.strip(),tds[2].text.strip(),tds[3].text.strip(),tds[4].text.strip()])

写完这一步,我们想要的数据已经获取到了,接下来就要将我们得到数据写道csv表格中

def writeList(ulist,num,year):#创建一个年份+中国大学排名.csv的文件,编码方式为gb2312f = open(year+'年中国大学排名.csv','w',encoding='gb2312',newline='')csv_writer = csv.writer(f)#写入标题:排名,名称,省份,类型,总分csv_writer.writerow(['排名','名称','省份','类型','总分'])#根据输入的写入量进行写入for i in range(num):u=ulist[i]#写入每条数据的前五个数据分别是:排名,名称,省份,类型,总分csv_writer.writerow([u[0],u[1],u[2],u[3],u[4]])#写入完毕关闭文件f.close()#打印写入成功提示print(year+'年中国大学排名爬取成功')

定义主函数

if __name__ == '__main__':#从2015写到2020for year in range(2015,2021):#定义空列表uinfo=[]#定义网址url = 'https://www.shanghairanking.cn/rankings/bcur/'+str(year)+'11'#获取网页内容html = getHTMLText(url)#获取数据catchData(uinfo,html)#写入文件,写入20个writeList(uinfo,20,str(year))

接下来查看运行效果

查看和py文件同一文件夹

可以看到已经存在表格,那么现在随便打开一个表格

与网站进行对比

数据相同,爬取成功!

下面是完整代码:

import requests
from bs4 import BeautifulSoup
import bs4
import csvdef getHTMLText(url):try:r=requests.get(url)r.raise_for_status()r.encoding=r.apparent_encodingreturn r.textexcept:return '获取网页失败'def catchData(ulist,html):soup=BeautifulSoup(html,'html.parser')for tr in soup.find('tbody').children:if isinstance(tr,bs4.element.Tag):tds=tr('td')ulist.append([tds[0].text.strip(),tds[1].text.strip(),tds[2].text.strip(),tds[3].text.strip(),tds[4].text.strip()])def writeList(ulist,num,year):f = open(year+'年中国大学排名.csv','w',encoding='gb2312',newline='')csv_writer = csv.writer(f)csv_writer.writerow(['排名','名称','省份','类型','总分'])for i in range(num):u=ulist[i]csv_writer.writerow([u[0],u[1],u[2],u[3],u[4]])f.close()print(year+'年中国大学排名爬取成功')if __name__ == '__main__':for year in range(2015,2021):uinfo=[]url = 'https://www.shanghairanking.cn/rankings/bcur/'+str(year)+'11'html = getHTMLText(url)catchData(uinfo,html)writeList(uinfo,20,str(year))

下一篇:利用爬取到的表格画出基于2015年前十名大学6年内的排名变化

requests+BeautifulSoup入门——爬取2015-2020年中国大学排名并写入csv文件中相关推荐

  1. 爬取安居客的信息,并保存到csv文件中。

    这里说明下不要用xpath进行爬取,因为会被封. # 引入包 import requests from bs4 import BeautifulSoup import time import csv# ...

  2. 爬取中国大学排名并以csv格式存储

    爬取中国大学排名并以csv格式存储 import requests from bs4 import BeautifulSoup import bs4def get_content(url):try:u ...

  3. python爬取当当网的书籍信息并保存到csv文件

    python爬取当当网的书籍信息并保存到csv文件 依赖的库: requests #用来获取页面内容 BeautifulSoup #opython3不能安装BeautifulSoup,但可以安装Bea ...

  4. python中国大学排名爬虫写明详细步骤-python爬虫爬取2020年中国大学排名

    from bs4 import BeautifulSoup # 网页解析 获取数据 import re # 正则表达式 进行文字匹配 import urllib.request, urllib.err ...

  5. 爬取去哪儿网旅游数据并且保存为csv文件

    参考用Python分析元旦旅游热门城市,告诉你哪些景点性价比更高''一文,我们可以到去哪儿网站上爬取某个城市,比如厦门的旅游数据,并且在此基础上进行数据分析.下面简单总结一下爬取的过程. 一.获取js ...

  6. python爬取微博数据存入数据库_Python爬取新浪微博评论数据,写入csv文件中

    因为新浪微博网页版爬虫比较困难,故采取用手机网页端爬取的方式 操作步骤如下: 1. 网页版登陆新浪微博 2.打开m.weibo.cn 3.查找自己感兴趣的话题,获取对应的数据接口链接 4.获取cook ...

  7. 2020年中国大学排名出炉!你报考的大学排第几?(软科)

    2020年5月15日,全球领先的高等教育评价机构软科今日正式发布"2020软科中国大学排名". 小编评价:这次的排名是整个学校的排名,不仅仅是计算机/软件类的排名,所以对" ...

  8. Python爬虫实战之一 - 基于Requests爬取拉勾网招聘信息,并保存至本地csv文件

    Python爬虫实战之二 - 基于Requests抓取拉勾网招聘信息 ---------------readme--------------- 简介:本人产品汪一枚,Python自学数月,对于小白,本 ...

  9. BS4爬取电影天堂的下载地址并保存至csv文件

    思路:BS4爬取电影天堂中最新电影名称及下一级链接中的下载地址,结果保存至csv文件 存在问题及需要完善(恳请各位大神提供帮助): (1)采集结果中的下载链接存在乱码: (2)代码需要优化. # co ...

最新文章

  1. kodi教程_KODI清理缓存插件安装设置教程
  2. 适应安装程序用的TreeView控件
  3. python打开-Python中的打开文件对话框(转)
  4. 31全志r58平台Android4.4.2下打开USB摄像头
  5. 解读Cardinality Estimation算法(第四部分:HyperLogLog Counting)
  6. 如何在 20 分钟内给你的 K8s PaaS 上线一个新功能?
  7. 【多线程基础】- 多个线程顺序打印ABC
  8. android判断usb已连接,android 判断是否有网络连接(usb连接电脑问题)
  9. 背景固定,内容滑动效果 - 仿QQ下载首页
  10. Notepad++集成nasm编译器
  11. Ubuntu16.04运行清空文件命令时提示权限不够解决方法
  12. 800*480bmp图片显示
  13. edittext 内容长度
  14. DDS产生波形及AM 调制解调原理
  15. springboot酒店客房管理系统设计
  16. 肠道微生物群在冠心病中的作用
  17. 常见物联网无线组网方式
  18. Javascript中公有成员,私有成员,静态成员
  19. Virtualbox centos虚拟机网络互联总结
  20. Java、JSP汽车零件销售管理系统的设计与实现

热门文章

  1. 苹果关闭自动更新_刚入手的苹果手机,记得关闭这3个设置,能让手机更省电...
  2. MacBook上的Markdown文本编辑教程
  3. 关于OBS无法获取酷狗音乐窗口问题
  4. React全家桶学习
  5. Python解释器路径查找
  6. 用一张长图片写动画——奔跑的大熊
  7. 记录一个常用函数fetchall()的使用过程
  8. 小米CR660x路由器打开SSH(无需第二台路由器)
  9. Pioneer 3-AT 中文数据表
  10. 超300家生态伙伴参与文心千帆内测,百度智能云销售线索单月增长超4倍