使用Beaufulsoup或lxml库爬取中国大学2019的排名信息

本文介绍了一种使用Python的requests和BeautifulSoup库爬取2019年中国大学排名信息的方法,包括排名、学校名称、所在省份及总分等关键数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

"""
爬取中国大学2019的排名信息,爬取‘排名’,‘学校名’,‘省份’,‘总分’,这四个字段信息
爬取网址:http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html
"""
import requests
from bs4 import BeautifulSoup
import bs4
from lxml import etree

def get_html(URL):
        res=requests.get(URL)
        res.encoding=res.apparent_encoding
        if res.status_code== 200:
            html=res.text
            return html
        else:
            pass

def soup_get_infos(html):
    """使用BeautifulSoup 提取"""
    soup=BeautifulSoup(html,"lxml")
    # for tr in soup.select(".hidden_zhpm tr"):     #第一种定位方法
    for tr in soup.find(class_="hidden_zhpm").children:     #第二种定位方法
        if isinstance(tr,bs4.element.Tag):          # 判断子节点是否为Tag对象(因为子节点会包含如换行符之类的节点)
            tds=tr("td")            # tr("td")会生成一个bs4.element.ResultSet类型的数据对象,实际上就是Tag列表
            data={
                "排名":tds[0].string,
                "学校名":tds[1].string,
                "省份":tds[2].string,
                "总分":tds[3].string
                 }
            print(data)


def lxml_get_infos(html):
    """使用lxml 提取"""
    soup=etree.HTML(html)
    trs=soup.xpath('//tr[@class="alt"]')
    for info in trs:
        # 排名
        rank = info.xpath('./td[1]/text()')[0]
        # 学校名
        name = info.xpath('./td[2]/div/text()')[0]
        # 省份
        province = info.xpath('./td[3]/text()')[0]
        # 总分
        score = info.xpath('./td[4]/text()')[0]
        data = {
            '排名' : rank,
            '校名' : name,
            '省份' : province,
            '总分' : score,
             }
        print(data)

def main():
    """主接口"""
    URL="http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html"
    html=get_html(URL)
    soup_get_infos(html)
    # lxml_get_infos(html)

if __name__ == '__main__':
    main()

运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值