默写,爬一个静态大学排行网页排名
from bs4 import BeautifulSoup import bs4 import requests def gethtmltxt(url): try: r=requests.get(url,timeout=30) r.raise_for_status() r.encoding=r.apparent_encoding return r.text except: return "" def culi(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 printfact(ulist,num): a="{:^10}{:^6}{:^10}" print(a.format("排名","学校","地域")) for i in range(num): u=ulist[i] print(a.format(u[0],u[1],u[2])) def main(): url="http://www.zuihaodaxue.com/zuihaodaxuepaiming2016.html" html=gethtmltxt(url) unifo=[] culi(unifo,html) printfact(unifo,20) main()
改编爬取一个类似的界面
http://gaokao.xdf.cn/201812/10838484.html
这个试试吧
一顿操作猛如虎,,怎么把许多字符串转换为一个列表一点点输出呢
# -*- coding: utf-8 -*- """ Created on Thu Jan 3 20:19:53 2019 @author: Administrator """ from bs4 import BeautifulSoup import bs4 import requests url="http://gaokao.xdf.cn/201812/10838484.html" r=requests.get(url,timeout=30) r.raise_for_status() r.encoding=r.apparent_encoding html=r.text soup=BeautifulSoup(html,"html.parser") for tr in soup.find('tbody').children: if isinstance(tr,bs4.element.Tag): a=tr("td") #print(type(a[1])) #print(type(tr)) #print(type(a)) #print(type(a[1].string)) #print(type(a[1].get_text())) u=a[1].get_text() #print(u,end=",") #l=[] #l.append(u.split(",")) m=u.split() #print(type(u)) #print(u) print(m,end="") #print(m[0],end="") #print(type(m[0])) #print(l) #print(type(m))
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::未完待续::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# -*- coding: utf-8 -*- """ Created on Thu Jan 3 20:19:53 2019 @author: Administrator """ from bs4 import BeautifulSoup import bs4 import requests url="http://gaokao.xdf.cn/201812/10838484.html" r=requests.get(url,timeout=30) r.raise_for_status() r.encoding=r.apparent_encoding html=r.text soup=BeautifulSoup(html,"html.parser") ls=[] for tr in soup.find('tbody').children: if isinstance(tr,bs4.element.Tag): a=tr("td") #print(type(a[1])) #print(type(tr)) #print(type(a)) #print(type(a[1].string)) #print(type(a[1].get_text())) #u=a[1].get_text() #print(u,end=",") #l=[] #l.append(u.split(",")) #m=u.split() #print(type(u)) #print(u) #print(m,end="") #print(m[0],end="") #print(type(m[0])) #print(l) #print(type(m)) #print(a[1].string) ls.append(a[1].string)
现在有一坨字符串 或者有一坨列表不知道如何转换为一个列表。
from numpy import unicode 然后把某某转化为unicode格式的
# -*- coding: utf-8 -*- """ Created on Thu Jan 3 20:19:53 2019 @author: Administrator """ from bs4 import BeautifulSoup import bs4 import requests url="http://gaokao.xdf.cn/201812/10838484.html" r=requests.get(url,timeout=30) r.raise_for_status() r.encoding=r.apparent_encoding html=r.text soup=BeautifulSoup(html,"html.parser") ls=[] for tr in soup.find('tbody').children: if isinstance(tr,bs4.element.Tag): a=tr("td") #print(type(a[1])) #print(type(tr)) #print(type(a)) #print(type(a[1].string)) #print(type(a[1].get_text())) #u=a[1].get_text() #print(u,end=",") #l=[] #l.append(u.split(",")) #m=u.split() #print(type(u)) #print(u) #print(m,end="") #print(m[0],end="") #print(type(m[0])) #print(l) #print(type(m)) #print(a[1].get_text()) #ls.append(a[1].string) #print(type(a[1].get_text())) b=a[1].get_text() c=b.split() ls.append(c) for i in range(20): print(ls[i][0]) 输出如下 学校名称 北京大学 清华大学 中国科学院大学 复旦大学 中国人民大学 浙江大学 上海交通大学 南京大学 武汉大学 中山大学 吉林大学 华中科技大学 天津大学 四川大学 中国科学技术大学 南开大学 北京师范大学 西安交通大学 哈尔滨工业大学
现在完成一小步,解决了格式问题,然后类推就行了
完整代码如下
# -*- coding: utf-8 -*- """ Created on Sat Jan 5 11:11:03 2019 @author: Administrator """ # -*- coding: utf-8 -*- """ Created on Thu Jan 3 20:19:53 2019 @author: Administrator """ from bs4 import BeautifulSoup import bs4 import requests url="http://gaokao.xdf.cn/201812/10838484.html" r=requests.get(url,timeout=30) r.raise_for_status() r.encoding=r.apparent_encoding html=r.text soup=BeautifulSoup(html,"html.parser") ls=[] for tr in soup.find('tbody').children: if isinstance(tr,bs4.element.Tag): a=tr("td") #print(type(a[1])) #print(type(tr)) #print(type(a)) #print(type(a[1].string)) #print(type(a[1].get_text())) #u=a[1].get_text() #print(u,end=",") #l=[] #l.append(u.split(",")) #m=u.split() #print(type(u)) #print(u) #print(m,end="") #print(m[0],end="") #print(type(m[0])) #print(l) #print(type(m)) #print(a[1].get_text()) #ls.append(a[1].string) #print(type(a[1].get_text())) b0=a[0].get_text() b1=a[1].get_text() b2=a[2].get_text() b3=a[3].get_text() b4=a[4].get_text() c0=b0.split() c1=b1.split() c2=b2.split() c3=b3.split() c4=b4.split() ls.append(c1) ls.append(c2) ls.append(c3) ls.append(c4) for i in range(50): #print(ls[8+4*i][0],ls[9+4*i][0],ls[10+4*i][0],ls[11+4*i][0]) print("{:^10}{:^6}{:^6}{:^10}".format(ls[8+4*i][0],ls[9+4*i][0],ls[10+4*i][0],ls[11+4*i][0]))
接下来用修改修改时
# -*- coding: utf-8 -*- """ Created on Sat Jan 5 11:11:03 2019 @author: Administrator """ # -*- coding: utf-8 -*- """ Created on Thu Jan 3 20:19:53 2019 @author: Administrator """ from bs4 import BeautifulSoup import bs4 import requests url="http://gaokao.xdf.cn/201812/10838484.html" r=requests.get(url,timeout=30) r.raise_for_status() r.encoding=r.apparent_encoding html=r.text soup=BeautifulSoup(html,"html.parser") ls=[] for tr in soup.find('tbody').children: if isinstance(tr,bs4.element.Tag): a=tr("td") for i in range(5): ls.append(a[i].get_text().split()) for i in range(50): #print(ls[8+4*i][0],ls[9+4*i][0],ls[10+4*i][0],ls[11+4*i][0]) print("{:^10}{:^6}{:^6}{:^10}{:^10}".format(ls[5+5*i][0],ls[6+5*i][0],ls[7+5*i][0],ls[8+5*i][0],ls[9+5*i][0])) 稍微修改修改
输出如下。
1 北京大学 100 8星级 世界一流大学 2 清华大学 97.68 8星级 世界一流大学 3 中国科学院大学86.77 8星级 世界一流大学(特色) 4 复旦大学 82.94 8星级 世界一流大学 5 中国人民大学82.48 8星级 世界一流大学(特色) 5 浙江大学 82.48 8星级 世界一流大学 7 上海交通大学82.24 7星级 世界知名高水平大学(前列) 8 南京大学 81.83 7星级 世界知名高水平大学(前列) 9 武汉大学 81.51 7星级 世界知名高水平大学(前列) 10 中山大学 78.70 7星级 世界知名高水平大学(前列) 11 吉林大学 77.84 7星级 世界知名高水平大学 12 华中科技大学76.99 7星级 世界知名高水平大学 13 天津大学 76.18 7星级 世界知名高水平大学 14 四川大学 76.13 7星级 世界知名高水平大学 15 中国科学技术大学75.78 8星级 世界一流大学(特色) 16 南开大学 75.58 7星级 世界知名高水平大学 17 北京师范大学75.55 7星级 世界知名高水平大学 18 西安交通大学75.08 7星级 世界知名高水平大学(前列) 19 哈尔滨工业大学75.03 7星级 世界知名高水平大学(前列) 20 中南大学 74.96 7星级 世界知名高水平大学 20 山东大学 74.96 7星级 世界知名高水平大学 22 厦门大学 74.61 7星级 世界知名高水平大学 23 同济大学 74.43 7星级 世界知名高水平大学 24 东南大学 73.99 7星级 世界知名高水平大学 25 北京航空航天大学71.87 7星级 世界知名高水平大学 26 东北大学 70.65 6星级 世界高水平大学 27 西北工业大学70.62 6星级 世界高水平大学 28 华东师范大学70.59 6星级 世界高水平大学 29 北京理工大学70.52 6星级 世界高水平大学 30 华南理工大学70.49 6星级 世界高水平大学 31 大连理工大学70.43 6星级 世界高水平大学 32 湖南大学 69.68 6星级 世界高水平大学 33 重庆大学 69.63 6星级 世界高水平大学 34 中国农业大学69.20 6星级 世界高水平大学(特色) 35 兰州大学 68.46 6星级 世界高水平大学 36 华中师范大学68.25 5星级 中国一流大学(特色) 37 电子科技大学68.18 6星级 世界高水平大学(特色) 38 西南大学 67.67 5星级 中国一流大学(特色) 39 河海大学 67.38 6星级 世界高水平大学(特色) 40 武汉理工大学67.16 5星级 中国一流大学(特色) 41 西南交通大学67.10 5星级 中国一流大学(特色) 42 北京科技大学66.80 5星级 中国一流大学(特色) 43 华中农业大学66.59 5星级 中国一流大学(特色) 44 北京交通大学66.57 5星级 中国一流大学(特色) 45 西北大学 66.51 5星级 中国一流大学(特色) 46 郑州大学 66.50 5星级 中国一流大学(特色) 47 南京农业大学66.40 5星级 中国一流大学(特色) 48 华东理工大学66.37 5星级 中国一流大学(特色) 49 苏州大学 66.36 5星级 中国一流大学(特色) 50 南京理工大学66.28 5星级 中国一流大学(特色) runfile('C:/Users/Administrator/大胆测试2.py', wdir='C:/Users/Administrator') 1 北京大学 100 8星级 世界一流大学 2 清华大学 97.68 8星级 世界一流大学 3 中国科学院大学86.77 8星级 世界一流大学(特色) 4 复旦大学 82.94 8星级 世界一流大学 5 中国人民大学82.48 8星级 世界一流大学(特色) 5 浙江大学 82.48 8星级 世界一流大学 7 上海交通大学82.24 7星级 世界知名高水平大学(前列) 8 南京大学 81.83 7星级 世界知名高水平大学(前列) 9 武汉大学 81.51 7星级 世界知名高水平大学(前列) 10 中山大学 78.70 7星级 世界知名高水平大学(前列) 11 吉林大学 77.84 7星级 世界知名高水平大学 12 华中科技大学76.99 7星级 世界知名高水平大学 13 天津大学 76.18 7星级 世界知名高水平大学 14 四川大学 76.13 7星级 世界知名高水平大学 15 中国科学技术大学75.78 8星级 世界一流大学(特色) 16 南开大学 75.58 7星级 世界知名高水平大学 17 北京师范大学75.55 7星级 世界知名高水平大学 18 西安交通大学75.08 7星级 世界知名高水平大学(前列) 19 哈尔滨工业大学75.03 7星级 世界知名高水平大学(前列) 20 中南大学 74.96 7星级 世界知名高水平大学 20 山东大学 74.96 7星级 世界知名高水平大学 22 厦门大学 74.61 7星级 世界知名高水平大学 23 同济大学 74.43 7星级 世界知名高水平大学 24 东南大学 73.99 7星级 世界知名高水平大学 25 北京航空航天大学71.87 7星级 世界知名高水平大学 26 东北大学 70.65 6星级 世界高水平大学 27 西北工业大学70.62 6星级 世界高水平大学 28 华东师范大学70.59 6星级 世界高水平大学 29 北京理工大学70.52 6星级 世界高水平大学 30 华南理工大学70.49 6星级 世界高水平大学 31 大连理工大学70.43 6星级 世界高水平大学 32 湖南大学 69.68 6星级 世界高水平大学 33 重庆大学 69.63 6星级 世界高水平大学 34 中国农业大学69.20 6星级 世界高水平大学(特色) 35 兰州大学 68.46 6星级 世界高水平大学 36 华中师范大学68.25 5星级 中国一流大学(特色) 37 电子科技大学68.18 6星级 世界高水平大学(特色) 38 西南大学 67.67 5星级 中国一流大学(特色) 39 河海大学 67.38 6星级 世界高水平大学(特色) 40 武汉理工大学67.16 5星级 中国一流大学(特色) 41 西南交通大学67.10 5星级 中国一流大学(特色) 42 北京科技大学66.80 5星级 中国一流大学(特色) 43 华中农业大学66.59 5星级 中国一流大学(特色) 44 北京交通大学66.57 5星级 中国一流大学(特色) 45 西北大学 66.51 5星级 中国一流大学(特色) 46 郑州大学 66.50 5星级 中国一流大学(特色) 47 南京农业大学66.40 5星级 中国一流大学(特色) 48 华东理工大学66.37 5星级 中国一流大学(特色) 49 苏州大学 66.36 5星级 中国一流大学(特色) 50 南京理工大学66.28 5星级 中国一流大学(特色)
写标准一点
输出排名前10大学 from bs4 import BeautifulSoup import bs4 import requests def gethtml(url): r=requests.get(url,timeout=30) r.raise_for_status() r.encoding=r.apparent_encoding return r.text def jiexi(html): soup=BeautifulSoup(html,"html.parser") ls=[] for tr in soup.find('tbody').children: if isinstance(tr,bs4.element.Tag): a=tr("td") for i in range(5): ls.append(a[i].get_text().split()) def dayin(n): for i in range(n): print("{:^10}{:^6}{:^6}{:^10}{:^10}".format(ls[5+5*i][0],ls[6+5*i][0],ls[7+5*i][0],ls[8+5*i][0],ls[9+5*i][0])) def main(n): url="http://gaokao.xdf.cn/201812/10838484.html" html=gethtml(url) dayin(n) main(10)
嗯,这个爬虫逼我去学习了BeautifulSoup库,主动学习,为了用而学速度就是快,中间的那段废了一点时间。还是挺好玩的
然后给出html源码,这样即使网站倒闭了,依然可以用bs库来分析,学习