python数据分析实验二

三、 实验内容和实验步骤:
3.1 第一项内容:爬取大学排名
爬取最好大学网网页中549所国内大学的排名数据,并将排名、学校名称、省市、总分、社会声誉等内容打印出来。
3.2 第二项内容:爬取中国工程院院士信息
爬取中国工程院网页上,把每位院士的简介保存为本地文件,把每位院士的照片保存为本地图片,文本文件和图片文件都以院士的姓名为主文件。
4.1 任务一实验步骤:
(1)使用Google Chrome或其他浏览器打开下面的网址,然后在页面上右击,在弹出的菜单中选择“查看网页源代码”。
http://www.zuihaodaxue.cn/zuihaodaxuepaiming20链接19.html
(2)分析网页源代码的,确定每个学校的姓名和连接所在的HTML标签,为解析网页做准备。
(3)编写代码,爬取信息。

import re
from fake_useragent import UserAgent
import requests


def find_str(start, end, str):
    partten = r'(?<=%s).*?(?=%s)'%(start,end)
    list = re.findall(partten, str)
    return list


ua = UserAgent()
head = {'User-Agent': ua.random}
web_url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html'
req = requests.get(web_url, headers=head)
req.encoding = 'utf-8'
# 提取每一个学校的所有信息
list_tmp = find_str('<tr class="alt">', '</tr>', req.text)
# 学校名字
name_list = find_str('<div align="left">','</div>',str(list_tmp))
# 培养规模
out_list = find_str( '<td class="hidden-xs need-hidden indicator7"style="display: none;">','</td>',str(list_tmp))
# 排名 位置 得分
temp_list = find_str('<td>','</td>',str(list_tmp))
list_r = []
list_l = []
list_s = []
i = 0
while i<len(temp_list):
    list_r.append(temp_list[i])
    list_l.append(temp_list[i+2])
    list_s.append(temp_list[i+3])
    i = i+4

print('排名   学校名称   省市   总分   培养规模')
for i in range(len(list_r)):
    print(' '+list_r[i]+'    '+name_list[i]+'    '+
          list_l[i]+'    '+list_s[i]+'    '+
          out_list[i])

4.2任务二实验步骤:
(1)使用Google Chrome或其他浏览器打开下面的网址,然后在页面上右击,在弹出的菜单中选择“查看网页源代码”。
http://www.cae.cn/cae/html/main/col48/column_48_1.html
(2)分析网页源代码的,确定每个院士的姓名和链接所在的HTML标签,为编写正则表达式做准备。
(3)使用浏览器打开任意一位院士的链接,然后查看并分析网页源代码,确定简介信息和照片所以的HTML标签,为编写正则表达式做准备。
(4)编写代码,爬取信息并创建本地文件。

from time import sleep

import requests
import re
import os
import urllib.request
from fake_useragent import UserAgent


def find_something(start, end, text):
    partten = r'(?<=%s).*?(?=%s)' % (start, end)
    list1 = re.findall(partten, text)
    return list1


def get_url_list():
    name_url = 'http://www.cae.cn/cae/html/main/col48/column_48_1.html'
    ua = UserAgent()
    head = {'User-Agent': ua.random}
    res = requests.get(name_url, headers=head)
    res.encoding = 'utf-8'
    url_list = find_something('<li class="name_list"><a href="', '" target="_blank">', res.text)
    for i in range(len(url_list)):
        url_list[i] = 'http://www.cae.cn' + url_list[i]
    set1 = set(url_list)
    return set1


def get_txt_pic(url):
    ua = UserAgent()
    head = {
        'User-Agent': ua.random
    }
    res = requests.get(url, headers=head)
    res.encoding = 'utf-8'
    picture1 = find_something('<img src="', '" style="width:150px;height:210px;"/>', res.text)
    picture = picture1[0]
    picture = 'http://www.cae.cn/' + picture
    list1 = find_something('<div class="right_md_name">', '</div>', res.text)
    name = list1[0]
    list1 = find_something('<p>', '</p>', res.text)
    str1 = ''
    for i in range(1, len(list1)):
        str1 = str1 + list1[i] + '\n'
    str1 = str1.replace("&ensp;", "")
    str1 = str1.replace("&nbsp;", "")
    f = open(name + '.txt', "w+", encoding='utf-8')
    f.write(str1)
    f.close()
    if not os.path.exists(name + '.jpg'):
        urllib.request.urlretrieve(picture, name + '.jpg')


list1 = get_url_list()
for li in list1:
    get_txt_pic(li)
    sleep(100)
原创文章 8 获赞 2 访问量 1909

猜你喜欢

转载自blog.csdn.net/myszpl/article/details/105622816
今日推荐