摘要
爬取的目标网页是最好大学网
这里使用BeautifulSoup + requests模块实现。
说明
基本步骤如下:
- 通过requests获取网站内容
- 通过BeautifulSoup查找到需要的元素
- 格式化输出结果
代码实现
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[2].string])
def printUnivList(uList, num):
'输出结果列表'
tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}"
print(tplt.format("排名", "学校名称", "总分", chr(12288))) # chr(12288) 中文填充空格
for i in range(num):
u = uList[i]
print(tplt.format(u[0], u[1], u[2], chr(12288)))
print("Suc" + str(num))
def main():
uinfo = []
url = "http://www.zuihaodaxue.com/shengyuanzhiliangpaiming2018.html"
html = getHTMLText(url)
fillUnivList(uinfo, html)
printUnivList(uinfo, 20) # 20 univs
if __name__ == "__main__":
main()
上面代码中,chr(12288)是表明空格使用中文空格来填充,代码格式化输出前20个学校的信息。
代码重点在于fillUnivList函数,也就是使用BeautifulSoup来定位元素的方法。
网友评论