1. 任务介绍
需求分析:爬取最好大学网,软科中国最好大学排名2019的数据,包括名次、学校名称、省份、总分、指标得分。
2. 爬虫的基本流程
准备工作
通过浏览器查看分析目标网页,学习编程基础规范。获取数据
通过request库向目标网站发起请求,请求可以包含的headers等信息,如果服务器能够正常响应,会得到一个response,这就是所需要获取的页面内容。解析内容
得到的内容可能是html、json等格式,可以用页面解析库、正则表达式等进行页面的解析。保存数据
保存数据的形式可以有多种样式,可以是文本,也可以保存到数据库,或者特定格式的文件。
3. 准备工作
(1). 分析页面
(2). 获取页面内容
def getHTMLText(url):
headers = {
'user-agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
} #伪装为浏览器去请求访问网页
r=requests.get(url,timeout=30,headers=header)
print(r.status_code) # 状态码 判断请求是否成功
r.encoding=r.apparent_encoding
return r.text
(3). 解析内容
#对爬取的html文件进行解析
def fillUnivList(ulist,html):
soup=BeautifulSoup(html,"html.parser")
for tr in soup.find("tbody").children: #遍历所有的tbody中的tr标签
if isinstance(tr,bs4.element.Tag):
tds=tr('td') #tr中的td标签,即为表中的每一列数据
ulist.append([tds[0].string,tds[1].string,tds[2].string,tds[3].string])
(4).保存数据
def save_UnivList(ulist,num):
fn=r"大国大学排名表.xlsx"
wb=Workbook() #创建工作簿
ws=wb.worksheets[0]
ws.title="2019中国大学排名信息" #更改表的名称
ws.append(["2019排名", "学校名称", "省份","分数"]) #添加表头信息
for i in range(num): #前num名学校信息
u = ulist[i]
ws.append(u)
wb.save(fn) #保存工作簿
源码请私信专栏栏主