4爬虫实例----大学排名

输入:大学排名网站的url链接
输出:大学排名信息的屏幕输出(排名,学校名称,总分)
技术:requests-bs4
此为定向爬虫,仅对给定的url进行爬取,不扩展爬取

步骤1:获取网页内容 getHTMLText()
步骤2:提取所需内容并放入合适的数据结构中fillUnivList()
步骤3:展示结果 printUnivList()

import requests
from bs4 import BeautifulSoup使用bs4库中的BeautifulSoup类
import bs4 为了使用bs4库中的标签类型定义
解决编码问题
import sys
reload(sys)
sys.setdefaultencoding(“utf-8”)

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):判断是tr标签的
tds=tr(‘td’)tr中的td标签存在tds中,(…)==.find_all(…)
ulist.append([tds[0].string,tds[1].string,tds[2].string])

def printUnivList(ulist,num):
^10意思是长度10
tplt="{0:10}\t{1:10}\t{2:^10}"
采用中文字符填充空格补齐chr(12288),自动补齐会默认英文空格补齐
print(tplt.format(“排名”,“学校名称”,“总分”,chr(12288)))
实现表头的打印
for i in range(num):
u=ulist[i]
print(tplt.format(u[0],u[1],u[2],char(12288)))

def main():
uinfo=[]
url=’’
html=getHTMLText(url)
fillUnivList(uinfo,html)
printUnivList(uinfo,20)

main()

猜你喜欢

转载自blog.csdn.net/ajx10132/article/details/86065278