前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >定向爬虫-中国大学MOOC-python网络爬虫实例

定向爬虫-中国大学MOOC-python网络爬虫实例

作者头像
Cloud-Cloudys
发布2020-07-07 15:44:15
8740
发布2020-07-07 15:44:15
举报
文章被收录于专栏:ShanSan的云原生之路

定向爬虫:仅对输入URL进行爬取,不扩展爬取 中国大学排名2018

format格式化输出

看下所需信息位置

程序大体框架

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup

def getHTMLText(url):
	return ""


def fillUnivList(ulist,html):
	pass


def printUnivList(ulist,num):
	print("Suc"+str(num))

def main():
	uinfo = []
	url = ""
	html = getHTMLText(url)
	fillUnivList(uinfo,html)
	printUnivList(uinfo,10)

main()

getHTMLText()

代码语言:javascript
复制
def GetHTMLText(url):       #获取网页内容
	try:
		r = requests.get(url)
		r.raise_for_status()   #用于捕获异常
		r.encoding = r.apparent_encoding
		return r.text
	except:	
	    return ""

fillUnivList()

代码语言:javascript
复制
def fillUnivList(ulist, html):         # 把网页内容放到数据结构中
    soup = BeautifulSoup(html,"html.parser")
    '''一个tr标签存放一所大学的信息'''
    for tr in soup.find("tbody").children:
        if isinstance(tr,bs4.element.Tag):  #仅仅遍历标签,过滤掉非标签类型的其它信息
            tds = tr('td')  #将所有的td标签存放到列表tds中,等价于tr.find_all('td')返回一个列表类型
            '''由于进行了遍历,使用print打印tds会得到多个列表'''
            ulist.append([tds[0].string, tds[1].string, tds[3].string])#向ulist中增加所需要的信息

printUnivList()

代码语言:javascript
复制
def printUnivlist(ulist, num):
    print("{:^10}\t{:^6}\t{:^10}".format("排名","学校","总分"))
    for i in range(num):
        u = ulist[i]
        print("{:^10}\t{:^6}\t{:^10}".format(u[0],u[1],u[2]))

main

代码语言:javascript
复制
import requests
import bs4   # 用到instance
from bs4 import BeautifulSoup

def GetHTMLText(url):       #获取网页内容
	try:
		r = requests.get(url)
		r.raise_for_status()   #用于捕获异常
		r.encoding = r.apparent_encoding
		return r.text
	except:	
	    return ""


def fillUnivList(ulist, html):         # 把网页内容放到数据结构中
    soup = BeautifulSoup(html,"html.parser")
    '''一个tr标签存放一所大学的信息'''
    for tr in soup.find("tbody").children:
        if isinstance(tr,bs4.element.Tag):  #仅仅遍历标签,过滤掉非标签类型的其它信息
            tds = tr('td')  #将所有的td标签存放到列表tds中,等价于tr.find_all('td')返回一个列表类型
            '''由于进行了遍历,使用print打印tds会得到多个列表'''
            ulist.append([tds[0].string, tds[1].string, tds[3].string])#向ulist中增加所需要的信息

def printUnivlist(ulist, num):
    print("{:^10}\t{:^6}\t{:^10}".format("排名","学校","总分"))
    for i in range(num):
        u = ulist[i]
        print("{:^10}\t{:^6}\t{:^10}".format(u[0],u[1],u[2]))

def main():
    uinfo = []
    url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2018.html"
    html = GetHTMLText(url)
    fillUnivList(uinfo,html)
    printUnivlist(uinfo,10)

main()

代码优化,使用chr(12288)解决中文对齐问题

代码语言:javascript
复制
import requests
import bs4   # 用到instance
from bs4 import BeautifulSoup

def GetHTMLText(url):       #获取网页内容
	try:
		r = requests.get(url)
		r.raise_for_status()   #用于捕获异常
		r.encoding = r.apparent_encoding
		return r.text
	except:	
	    return ""


def fillUnivList(ulist, html):         # 把网页内容放到数据结构中
    soup = BeautifulSoup(html,"html.parser")
    '''一个tr标签存放一所大学的信息'''
    for tr in soup.find("tbody").children:
        if isinstance(tr,bs4.element.Tag):  #仅仅遍历标签,过滤掉非标签类型的其它信息
            tds = tr('td')  #将所有的td标签存放到列表tds中,等价于tr.find_all('td')返回一个列表类型
            '''由于进行了遍历,使用print打印tds会得到多个列表'''
            ulist.append([tds[0].string, tds[1].string, tds[3].string])#向ulist中增加所需要的信息


'''def printUnivlist(ulist, num):
    print("{:^10}\t{:^6}\t{:^10}".format("排名","学校","总分"))
    for i in range(num):
        u = ulist[i]
        print("{:^10}\t{:^6}\t{:^10}".format(u[0],u[1],u[2]))
'''
'''优化输出格式,中文对齐问题,使用chr(12288)表示一个中文空格,utf-8编码'''
def printUnivlist(ulist, num):
    tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}"   #输出模板,{3}使用format函数第三个变量进行填充,即使用中文空格进行填充
    print(tplt.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/zuihaodaxuepaiming2018.html"
    html = GetHTMLText(url)
    fillUnivList(uinfo,html)
    printUnivlist(uinfo,10)

main()

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年10月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • format格式化输出
  • 程序大体框架
    • getHTMLText()
      • fillUnivList()
        • printUnivList()
          • main
            • 代码优化,使用chr(12288)解决中文对齐问题
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档