Python实验作业,爬虫,中国院士信息

news/2024/7/19 11:16:33 标签: python, 爬虫, 开发语言

实验内容:


爬取中国工程院网页上,把每位院士的简介保存为本地文本文件,把每位院士的照片保存为本地图片,文本文件和图片文件都以院士的姓名为主文件名。

实验代码:

python">import os.path
import time
from urllib.request import urlopen

# 创建用来存放爬取结果文件的文件夹
dstDir = 'YuanShi'
if not os.path.isdir(dstDir):
    os.mkdir(dstDir)

# 爬取起始页面
startUrl = r'http://www.cae.cn/cae/html/main/col48/column_48_1.html'
# 读取网页内容
with urlopen(startUrl) as fp:
    content = fp.read().decode()

# 提取并遍历每位大牛链接
pattern = r'<li class="name_list"><a href="(.+)"'\
           +' target="_blank">(.+)</a></li>'
result = re.findall(pattern, content)
print(result)

# 爬取每位院士的简介和照片
for item in result:
    perUrl, name = item
    print(item)
    print('正在爬取{}...'.format(perUrl))
    name = os.path.join(dstDir, name)
    perUrl = r'http://www.cae.cn/' + perUrl
    with urlopen(perUrl) as fp:
        content = fp.read().decode()
    # 抓取照片并保存为本地图片文件
    pattern = r'<img src="/cae/admin/upload/(.+)" style='
    result = re.findall(pattern, content, re.I)
    print(result[0])
    if result:
        picUrl = r'http://www.cae.cn/cae/admin/upload/{0}'
        picUrl = picUrl.format(result[0].replace(' ', r'%20'))
        print(picUrl)
        with open(name+'.jpg', 'wb') as pic:
            pic.write(urlopen(picUrl).read())            
    # 抓取简介并写入本地文本文件
    pattern = r'<p>(.+?)</p>'
    result = re.findall(pattern, content)
    if result:
        intro = re.sub('(<a.+</a>)|(&ensp;)|(&nbsp;)',
                       '',
                       '\n'.join(result))
        with open(name+'.txt', 'w', encoding='utf8') as fp:
            fp.write(intro)

实验结果:


http://www.niftyadmin.cn/n/5274437.html

相关文章

php-使用wangeditor实现富文本-遇见问题

一、在 PowerShell 中使用 npm install 命令时&#xff0c;命令行解析器可能会将 符号解释为特殊字符&#xff0c;导致出现错误。 报错 解决 方法一&#xff1a;使用反引号&#xff08;&#xff09;将包名括起来&#xff0c;以避免特殊字符的解析。修改命令为&#xff1a; …

优化 SQL

在日常工作中&#xff0c;我们可以通过以下几个方面来优化 SQL&#xff1a; 选择合适的数据类型&#xff1a;使用最小的数据类型来存储数据&#xff0c;可以减小数据库的存储空间&#xff0c;提高查询效率。 编写高效的查询语句&#xff1a;避免使用不必要的子查询、JOIN 操作…

js对象转换为excel,excel转换为js对象

文章目录 前言js转excelexcel转js对象总结 前言 使用module.exports导出&#xff0c;require导入 修改后缀为mjs,可使用importd导入 &#xff0c;export default \export导出&#xff08;自用过一次&#xff0c;后面忘记怎么改的了&#xff09; js转excel 需要安装nodejs node …

[PyTorch][chapter 8][李宏毅深度学习][Back propagation]

前言&#xff1a; 反向传播算法(英:Backpropagation algorithm&#xff0c;简称:BP算法)是一种监督学习算法&#xff0c;常被用来训练多层感知机。 它用于计算梯度计算中&#xff0c;降低误差。 目录&#xff1a; 链式法则 模型简介&#xff08;Model&#xff09; 损失函…

如何在Windows系统上部署VisualSVN并实现远程访问管理界面【内网穿透】

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 前言 SVN 是 subversion 的缩写&#xff0c;是一个开放源代码的版本控制系统…

std::mem_fn函数

第一次遇到这个函数&#xff0c;记录一下 std::mem_fn 是 C 标准库 <functional> 头文件中提供的函数模板&#xff0c;用于生成成员函数的函数对象。它允许将成员函数包装成可调用对象&#xff0c;用于传递给标准库算法、函数对象、以及一些支持可调用对象的函数。 templ…

助力智能人群检测计数,基于YOLOv5全系列模型【n/s/m/l/x】开发构建通用场景下人群检测计数识别系统

在一些人流量比较大的场合&#xff0c;或者是一些特殊时刻、时段、节假日等特殊时期下&#xff0c;密切关注当前系统所承载的人流量是十分必要的&#xff0c;对于超出系统负荷容量的情况做到及时预警对于管理团队来说是保障人员安全的重要手段&#xff0c;本文的主要目的是想要…

25G/100G校园网解决方案

不断增长的视频流媒体、人工智能&#xff08;AI&#xff09;和云应用的流量需求推动了对更快速、更高容量校园网络解决方案的需求。这就是为什么25G/100G以太网解决方案正在迅速发展的原因。 什么是25G/100G以太网解决方案&#xff1f; 在25G/100G校园网络中&#xff0c;通常…