python中国大学排名爬虫写明详细步骤-python中国大学排名爬虫
python 中国大学排名爬虫
首先,给一个最好大学网URL:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html,
点击这里进入
.
功能描述
输入:大学排名URL链接
输出:大学排名信息的屏幕输出(排名,大学名称,总分)
技术路线:requests‐bs4
定向爬虫:仅对输入URL进行爬取,不扩展爬取
定向爬虫可行性
在最好大学网点击右键,查看源代码,Ctrl+F搜索清华大学,可以到与每一个大学额相关对应的代码部分,如下图:
可以看到这段代码是使用tr标签来索引的一段信息,从代码段可以看到相关大学的排名,名称和总分信息,因此可以实现定向爬虫。
此外还要注意该网站是否提供了robots协议的约定:
可以手工查看是否符合:http://www.zuihaodaxue.cn/robots.txt,可以发现该网站并不存在,说明该网站没有对爬虫作相关限制。
程序的结构设计
步骤1:从网络上获取大学排名网页内容 getHTMLText()
步骤2:提取网页内容中信息到合适的数据结构 fillUnivList()
步骤3:利用数据结构展示并输出结果 printUnivList()
直接上代码:
导入相关库:
import requests
from bs4 import BeautifulSoup
import bs4
编写函数
getHTMLText()
:
def getHTMLText(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""
编写函数
fillUnivList()
:
def fillUnivList(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].string,tds[1].string,tds[3].string])
编写函数
printUnivList()
:
def printUnivList(ulist, num):
tplt="{0:^10} {1:{3}^8} {2:^10}"
print("{0:^8} {1:{3}^8} {2:^8}".format("排名","学校名称","总分", chr(12288)))
for i in range(num):
u = ulist[i]
print(tplt.format(u[0], u[1], u[2], chr(12288)))
中文对齐问题原因及解决方案
① 中文对齐原因:
② 解决方案:
利用chr(12288)修改输出格式。
运行结果:
完整程序代码:
import requests
from bs4 import BeautifulSoup
import bs4
def getHTMLText(url):
try:
r = requests.get(url, timeout=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:
if isinstance(tr, bs4.element.Tag):
tds = tr('td')
ulist.append([tds[0].string,tds[1].string,tds[3].string])
def printUnivList(ulist, num):
tplt="{0:^10} {1:{3}^8} {2:^10}"
print("{0:^8} {1:{3}^8} {2:^8}".format("排名","学校名称","总分", chr(12288)))
for i in range(num):
u = ulist[i]
print(tplt.format(u[0], u[1], u[2], chr(12288)))
def main():
uinfo = []
url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html"
html = getHTMLText(url)
fillUnivList(uinfo, html)
printUnivList(uinfo, 20)
main()
python中国大学排名爬虫写明详细步骤-python中国大学排名爬虫相关推荐
- python中国大学排名爬虫写明详细步骤-Python爬虫——定向爬取“中国大学排名网”...
内容整理自中国大学MOOC--北京理工大学-蒿天-Python网络爬虫与信息提取 相关实战章节 我们预爬取的url如下 网页节选 在浏览器中读取网页源代码 可以 发现表格数据信息是直接写入HTML页面 ...
- python中国大学排名爬虫写明详细步骤-Python爬虫--2019大学排名数据抓取
Python爬虫--2019大学排名数据抓取 准备工作 输入:大学排名URL连接 输出:大学排名信息屏幕输出 所需要用到的库:requests,bs4 思路 获取网页信息 提取网页中的内容并放到数据结 ...
- python中国大学排名爬虫写明详细步骤-Python之爬虫-中国大学排名
#!/usr/bin/env python # coding: utf-8 import bs4 import requests from bs4 import BeautifulSoup # 通过传 ...
- python中国大学排名爬虫写明详细步骤-python网络爬虫入门实例:中国大学排名定向爬虫...
中国大学排名定向爬虫的 设计和实现 一.环境安装: 1.选择一个适合自己的IDE(以下代码用Jupyter Notebook编写) 2.打开cmd,安装requests库和beautifulsoup4 ...
- python中国大学排名爬虫写明详细步骤-python爬虫爬取2020年中国大学排名
from bs4 import BeautifulSoup # 网页解析 获取数据 import re # 正则表达式 进行文字匹配 import urllib.request, urllib.err ...
- python中国大学排名爬虫写明详细步骤-Python爬虫 2020中国大学排名
爬取中国大学排名 request 获取 html beautiful soup 解析网页 re 正则表达式匹配内容 新建并保存 excel 1 2 3 4 -*- codeing = utf-8 -* ...
- python官网的sdk下载详细步骤-Python SDK(beta)
Python SDK(beta) 更新时间:2018-03-23 17:26:00 概述 本文结合Link Develop,详细介绍如何基于Python SDK,实现物联网设备的设备注册.属性上报.事 ...
- python中国大学排名爬虫写明详细步骤-【Python爬虫】从html里爬取中国大学排名...
from bs4 import BeautifulSoup import requests import bs4 #bs4.element.Tag时用的上 #获取网页页面HTML def getHTM ...
- python官网的sdk下载详细步骤-Python SDK
下载地址 IMM Service 的 Python SDK 让开发人员可以非常方便地使用 Python 操作阿里云智能媒体管理服务. 已经开源到github. 操作步骤 为快速开始使用 IMM Ser ...
最新文章
- ubuntu 在 rc.local 里添加了命令为什么无法执行
- 与服务器交互的分页组件PageComponent
- 又一个高等级数据中心着火了!
- AI:2020年6月21日北京智源大会演讲分享之09:20-09:40黄铁军教授《智源进展报告》
- java 树 右键菜单_VUE实现Studio管理后台(八):用右键菜单contextmenu,编辑树形结构...
- 【例4-4】最小花费
- 内蒙古银行银行招聘计算机研究生,内蒙古银行招聘公告
- Java未来路在何方?图文详解!
- es xxx_by_query
- winserver2008/2008R2 AD域控/DNS环境搭建详细步骤
- AcWing 166. 数独
- ubuntu系统安装初始化脚本
- 【回归预测】基于matlab Logistic混沌映射改进的麻雀搜索算法优化BP神经网络回归预测【含Matlab源码 1552期】
- UNIX 环境高级编程读书笔记(1)
- SAP PO中如何打印预览,找到Message type以及找到驱动程序和Form输出程序
- 2021-05-02 收心继续
- WDK10编译出最适合申请WHQL认证的驱动
- php tps,tps是啥
- 金融科技大数据产品推荐:荣之联·风报—人工智能企业情报分析系统
- 如何画Flot折线图
热门文章
- Android自定义控件属性的使用
- Oracle数据库知识要点
- 预备作业02 20162316刘诚昊
- return、break、continue区别以及作用范围
- Centos7 关闭防火墙(转)
- Apache+Tomcat +mod_proxy集群负载均衡及session
- java.math.BigDecimal保留两位小数,保留小数,精确位数
- FindStringExact
- poj 3026 (最小生成树)
- boost 库 enable_shared_from_this 实现原理分析