初学爬虫1: 爬取最好中国大学排名网

开始不务正业2333

这个挺简单的 , bs4+requests 就好了

然鹅我好像是c++打多了,python的各种语法都不会了,那个format更是一脸懵逼

我在打的时候遇到了2个问题

1,我找tbody的时候,使用了

pro1=demo.find_all(name='tbody').children

因为find_all是返回所有找到元素的列表,自然就没有children

2.我竟然企图这么写

for a in pro1:
    if( isinstance(a,bs4.element.Tag) ):
        a.find_all('td')
        List.append([a[1].string,a[3].string])

可见我python真的很生疏2333

import requests
from bs4 import BeautifulSoup
import bs4
def get_html(url):
    try:
        html = requests.get(url, headers=h)
        html.raise_for_status()
        html.encoding=html.apparent_encoding
        return html.text
    except:
        return "wrong"
def get_rank(List,html):
    demo=BeautifulSoup(html,"html.parser")
    pro1=demo.find(name='tbody').children
    for a in pro1:
        if( isinstance(a,bs4.element.Tag) ):
            sto=a.find_all('td')
            List.append([sto[1].string,sto[3].string])
    output(List)

def output(List):
    with open("res.txt",'a') as f:
        cnt=1
        for aim in List:
            f.write("{:^20}{:^20}{:^20}\n".format(cnt,aim[0],aim[1]))
            cnt+=1
    f.close()
url="http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html"
h={'user-agent':"Mozilla/5.0"}
html=get_html(url)
List=[]
get_rank(List,html)

 

你可能感兴趣的:(python)