Python作业默写和自己改编

默写,爬一个静态大学排行网页排名

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库来分析,学习 


posted @ 2019-01-03 19:49  V5八旗  阅读(296)  评论(0编辑  收藏  举报