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)

实验结果:

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2023-12-21 10:14:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-21 10:14:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-21 10:14:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-21 10:14:04       18 阅读

热门阅读

  1. 【数据爬取】Jsoup爬取数据的使用

    2023-12-21 10:14:04       40 阅读
  2. 支付宝单笔转账开发

    2023-12-21 10:14:04       42 阅读
  3. 拿到服务器该做的事和升级docker engine

    2023-12-21 10:14:04       43 阅读
  4. 记一次gunicorn启动报错

    2023-12-21 10:14:04       36 阅读
  5. AcWing算法进阶课-1.1.1EK求最大流

    2023-12-21 10:14:04       56 阅读
  6. docker-compose_redis_cluster

    2023-12-21 10:14:04       30 阅读