python爬取百度百科获取中国高校信息

2023-05-16

公众号看到的文章,感觉不错,适合练手。所以就自己做了一遍。

废话不多说开整。

目的:手头有一份《学校名称.xlsx》的表格。想要这些学校的英文名称、描述、简称

学校名称.xlsx

 最终成果

步骤1:分析

所需要的学校信息,一般在百度百科里都有。所以先看看百度百科的数据能不能满足我们的要求。

先抽样找一个学校到百度百科看看情况

拿北京大学来说:英文名称、描述、简称

都可以在这一个界面中获取到。

然后所有的信息,在页面源码中也能看得到。所以理论上我们把这个页面的信息爬下来之后,做简单的处理就行了。

步骤2:写代码

1、需要用到的技术和包

import requests
import pandas as pd
from random import choice
from lxml import etree
import openpyxl
import logging
from concurrent.futures import ThreadPoolExecutor
from time import sleep
from random import random

说明:

requests,python爬虫必备。这里用来发送get请求并接受返回结果

pandas,数据分析的基础,必备。这里用于把Excel表格的学校名称,用pandas读取之后转成list,并组成百度百科网址的一部分。

random,

        random方法,生成伪随机数。跟time一起使用。让程序随机睡眠几秒,避免CPU一直被占用导致电脑发热、死机以及避免百度封ip

        choice方法,随机一个。这里用于随机选择一个http的头信息。

lxml,解析网页返回数据用(返回数据是一堆网页代码。很多无用的,得解析到需要的英文名、简称、描述)

openpyxl,写入表格用的

logging,记录日志

concurrent.futures,Python多线程。我们要爬取3000左右的数据,单线程执行会很慢,用多线程会快很多

time,用sleep方法,让代码休眠。

2、写一个爬取数据的函数

def get_data(item):
    try:
        # 记录一下它原本的序号
        sort_num = items.index(item)
        # 随机生成请求头
        headers = {
            'User-Agent':choice(user_agent)
        }
        # 构造的url
        url = f'https://baike.baidu.com/item/{item}'
        # 发送请求   获取响应
        rep = requests.get(url, headers=headers)
        sleep(random())
        # Xpath解析提取数据
        html = etree.HTML(rep.text)
        description = ''.join(html.xpath('/html/head/meta[4]/@content'))
        # 外文名
        en_name = ','.join(html.xpath('//dl[@class="basicInfo-block basicInfo-left"]/dd[2]/text()')).strip()
        # 中文简称  有的话  是在dd[3]标签下
        simple_name = ''.join(html.xpath('//dl[@class="basicInfo-block basicInfo-left"]/dd[3]/text()')).strip()
        sheet.append([item, simple_name, en_name, description, url, sort_num])
        logging.info([item, simple_name, en_name, description, url, sort_num])

    except Exception as e:
        logging.info(e.args)
        pass

3、写一个多线程的函数,并保存爬取并解析后的数据到文件。

# 函数调用   开多线程
def run():
    with ThreadPoolExecutor(max_workers=5) as executor:
        executor.map(get_data, items)

    wb.save('成果.xlsx')
    print('===================== 数据成功下载完成 ======================')

说明:

map(function, iterable, ...)
会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

直白点说,就是map(a,b),a是函数,b是序列。把b一个一个的传入a去执行。有点循环的意思。

这个例子里的b就是从表格里获取的学校名称的list列表。有3000个左右,所以这个run()函数执行的话,得执行3000次

4、执行多线程函数

run()

5、运行效果(不会做动图,所以这个动图是抄的大佬的图)

6、最后得到一个成果.xlsx文件

说明:

以上代码需要都抄到一个py文件里执行。

上面单独拆出来,主要是为了讲解。

最后:

感慨一句:年轻时辜负时光,会在你后续的人生中会加倍的来坑你。

以前上学的时候偷懒,HTML相关的知识基本没学。现在关于元素定位看起来太费劲了。

最最后:

公众号里一句高赞评论:学姐拿着成果.xlsx给男朋友说:“你看,舔狗还是好用吧”

参考:

xpath元素定位常用的5种方法(相对路径)_adorable_的博客-CSDN博客_定位xpath路径都有哪些方法

原作者应该是叶庭云叶庭云的博客_CSDN博客-报错、异常解决,Python数据分析与可视化,修炼Python领域博主

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python爬取百度百科获取中国高校信息 的相关文章

  • Win11怎么彻底卸载Xbox Game Bar?

    Xbox Game Bar是常用于捕捉 记录屏幕并与其他游戏玩家朋友聊天的工具 xff0c 缺点就是运行过程中会占用大量的空间 xff0c 有什么办法可以卸载Xbox Game Bar xff0c 释放空间吗 xff1f 下面就来看看详细的
  • Win11打开本地组策略编辑器的两种方法

    Win11是新推出的操作系统 xff0c 但是用户对很多操作都不熟悉 xff0c 想要通过本地组策略编辑器修改一些配置 xff0c 都找不到本地组策略编辑器 xff0c 那么Win11怎么打开本地组策略编辑器呢 xff1f 一起来看看具体的
  • 介绍一下115sha1链接使用方法

    收到一个115 开头的网盘链接 xff0c 要如何下载呢 xff1f 单纯复制这个链接是没有办法直接下载的 xff0c 复制进去还会显示链接地址错误 xff0c 那么小编这里就给大家分享一下正确的使用方法 xff0c 希望可以帮到你 115
  • 夸克网盘的文件怎么保存到百度网盘?

    我们经常将自己的文件 视频等等都传到网盘上储存 xff0c 大大减少电脑和手机的占用 xff0c 其中百度网盘和夸克网盘是非常受欢迎的两款软件 xff0c 拥有超大的云储存空间 xff0c 用户想存什么就存什么 那夸克网盘的文件能存到百度网
  • Furmark如何进行正确的烤机?

    Furmark是一款非常不错的显卡性能以及稳定度测试软件 xff0c 通过这款软件可以快速测试出显卡的性能以及显卡是否稳定 xff0c 下面小编就来教教大家Furmark如何进行正确的烤机吧 1 打开Furmark xff0c 可以看到如图
  • WinRAR一直自动关闭怎么回事

    很多用户都习惯使用WinRAR来压缩解压文件 xff0c 但是有小伙伴跟小编反映自己的WinRAR老是一直闪退 xff0c 这是怎么回事 xff1f 下面就来看看WinRAR软件闪退的解决办法吧 Win10纯净版 Win10 64位纯净版
  • win11共享文件夹需要用户名和密码?

    在共享文件夹时提示需要用户名和密码 xff0c 这是怎么回事 xff1f 不少win11用户跟小编反映了这个问题 xff0c 我们要如何解决呢 xff1f 下面就来看看具体的win11共享文件夹需要用户名和密码的解决办法吧 win11共享文
  • win11桌面文件在哪个文件夹?

    很多win10系统用户应该都知道 xff0c 桌面文件默认存储在C xff1a Users Username Desktop文件夹中 xff0c 那升级win11之后 xff0c 桌面文件在哪个文件夹呢 xff1f 有没有改动呢 xff1f
  • win7时间总是不对怎么办?

    一般用户的主机中的主板会有一个电池 xff0c 这个电池可以给主板供电 xff0c 但是主板电池没电了的话就会将原本的时间设置清空 xff0c 因此这个时候时间就是不对的 xff0c 下面就是关于win7时间总是不对的解决方法 xff0c
  • Win10无法连接打印机怎么办?不能使用打印机的解决方法

    在我们平常的办公中 xff0c 经常会需要使用到打印机打印文件 想要使用打印机是需要先将电脑与打印机连接的 xff0c 但是有部分Win10用户遇到了无法连接打印机的情况 xff0c 对于这种情况应该如何解决呢 xff1f 下面来看看详细的
  • 【python】6DOF analyse tool

    1 result show 1 1 note 图1为3D位置 xff0c 图2 xff0c 3 xff0c 4分别表示yaw pitch xff0c roll角随着时间的变化的波动 2 code span class token comme
  • Spring入门预备知识(上)

    Spring入门主要使用了下面几个技术 xff1a 工厂模式 单例模式 动态代理模式 面向接口编程 xff0c 下面分几部分详细分析 一 xff09 工厂模式 1 定义 xff1a 定义一个用于创建对象的接口 xff0c 让子类决定实例化哪
  • 电脑丢失dll文件能一键修复吗,哪种修复方法靠谱?

    Dll文件的丢失其实是一件挺常见的事情的 xff0c 最近就有网友问小编 xff0c 关于dll文件丢失的相关问题 xff0c 他问电脑丢失dll文件能一键修复吗 xff1f 这里小编告诉你 xff0c 有方法一键修复 xff0c 但是需要
  • vcruntime140_1.dll无法继续执行代码,怎么解决这种问题?

    经常使用电脑的人 xff0c 可能对于这个弹出框应该不陌生 xff0c vcruntime140 1 dll无法继续执行代码 xff0c 其实会出现这种情况 xff0c 主要是因为缺少一个动态链接库 DLL 文件导致的 这个文件是 Visu
  • 这可能是最简单又有效的自监督学习方法了

    文 王珣 64 知乎 本文已获作者授权 xff0c 禁止二次转载 从Kaiming的MoCo和Hinton组Chen Ting的SimCLR开始 xff0c 自监督学习 xff08 SSL xff09 成了计算机视觉的热潮显学 凡是大佬大组
  • idea 2022.1 创建maven卡死解决

    1 关闭项目 2 新建maven项目 创建成功
  • FFmpeg 命令常见操作

    1 转码 ffmpeg i source mp4 ss 20 t 10 c copy my mp4 ffmpeg ss 10 t 15 accurate seek i test mp4 c a copy c v copy tt mp4 i
  • FFprobe查看&统计视频信息

    1 查看音视频信息 1 1 查看基本信息 ffprobe span class token number 1280 span x720 h264 8mbps 30fps span class token punctuation span m
  • Linux 查看文件夹大小,磁盘剩余空间(du/df)

    1 简介 du查看目录大小 xff0c df查看磁盘使用情况 2 du disk usage xff08 1 xff09 基本功能 递归查看文件夹下所有文件的大小 xff08 2 xff09 常用参数 xff1a h human reada
  • Python matplotlib高级绘图详解

    1 前言 前面我们介绍了使用matplotlib简单的绘图方法 xff08 见 xff1a Python应用matplotlib绘图简介 xff09 但是想要完全控制你的图形 xff0c 以及更高级的用法 xff0c 就需要使用 pyplo

随机推荐