默写,爬一个静态大学排行网页排名
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库,主动学习,为了用而学速度就是快,中间的那段废了一点时间。还是挺好玩的
















