软科大学爬取获取所有数据

img

img

大学软科爬取,数据进行爬取,并传入列表,并进行下载,提取出相应的信息

该回答引用ChatGPT
首先,需要确定要获取软科大学排名的哪些信息,例如学校名称、排名、学校类型等信息。然后可以使用Python的爬虫库(例如BeautifulSoup、 requests)来向软科大学排名网站发送请求,并解析获取到的HTML页面,提取所需的信息存储至列表中。最后再使用Python的文件读写模块将信息保存至文件中。

以下是一个可能的实现代码示例:


import requests
from bs4 import BeautifulSoup

# 发送请求获取HTML页面
url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html'
response = requests.get(url)

# 解析HTML页面并提取所需信息
soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table', attrs={'class': 'table table-hover'})
schools_list = []
for row in table.tbody.find_all('tr')[1:]:
school_info = []
for cell in row.find_all('td'):
school_info.append(cell.text.strip())
schools_list.append(school_info)

# 将信息保存至文件
with open('schools.txt', 'w', encoding='utf-8') as f:
f.write('学校名称\t排名\t城市\t学校类型
')
for school_info in schools_list:
f.write('\t'.join(school_info) + '
')

# 打印列表
for school_info in schools_list:
print(school_info)


这个示例代码通过请求软科大学排名网站并使用BeautifulSoup解析HTML页面,提取每一行的信息并存储至列表中。最后再使用文件读写模块将信息保存至文件中。你可以根据实际需要自行修改代码实现功能需求。

用pandas来保存数据
大致可以写成这样

import pandas as pd
# 创建一个pd对象
data = pd.DataFrame(columns=('ranking', 'names', 'scores', 'type', 'schoole_level'))
# 循环把数据添加到pd中
for k in range(len(scores)):
    data = data.append(
        [{'ranking': ranking[k], 'names': names[k], 'scores': scores[k], 'type': type[k],
          'schoole_level': schoole_level[k]}], ignore_index=True)
# 保存到excel
data.to_excel('./data.xlsx', index=False)

以下内容部分参考ChatGPT模型:

首先,我们需要使用Python中的requests库来发送HTTP请求,并使用BeautifulSoup库来解析HTML页面。另外,我们还需要使用lxml库来解析XML页面。

接下来,我们需要使用virtualenv来创建一个虚拟环境,以便在其中安装所需的Python库。具体步骤如下:

  1. 安装virtualenv库:
pip install virtualenv
  1. 创建一个名为myenv的虚拟环境:
virtualenv myenv
  1. 激活虚拟环境:
source myenv/bin/activate
  1. 在虚拟环境中安装所需的Python库:
pip install requests BeautifulSoup4 lxml

现在我们可以开始编写爬虫代码了。下面是一个简单的例子,可以爬取软科大学排名中的所有学校名称和排名信息,并将它们存储在一个Python列表中:

import requests
from bs4 import BeautifulSoup

# 发送HTTP请求获取HTML页面
url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html'
response = requests.get(url)

# 使用BeautifulSoup解析HTML页面
soup = BeautifulSoup(response.content, 'html.parser')

# 使用lxml解析XML页面
# soup = BeautifulSoup(response.content, 'lxml')

# 获取所有的tr标签
tr_list = soup.find_all('tr')

# 定义一个空的列表用于存储学校信息
schools = []

# 遍历每个tr标签
for tr in tr_list:
    # 获取当前tr标签中的td标签
    td_list = tr.find_all('td')
    
    # 如果td_list为空,则说明当前tr标签不包含学校信息
    if not td_list:
        continue
    
    # 获取当前学校的排名和名称信息
    rank = td_list[0].text.strip()
    name = td_list[1].text.strip()
    
    # 将学校信息添加到schools列表中
    schools.append({'rank': rank, 'name': name})

# 打印所有学校信息
for school in schools:
    print(school['rank'], school['name'])

上述代码中,我们首先使用requests库发送HTTP请求,获取软科大学排名页面的HTML内容,然后使用BeautifulSoup库解析HTML页面,获取所有的tr标签,遍历每个tr标签,获取当前学校的排名和名称信息,并将学校信息添加到schools列表中。最后,我们使用for循环打印所有学校信息。

需要注意的是,如果我们要解析XML页面,需要将BeautifulSoup的第二个参数设置为'lxml'。另外,如果我们要处理非英文字符集的页面,需要在发起HTTP请求时指定正确的字符集编码,例如:

response = requests.get(url, headers={'Content-Type': 'text/html; charset=utf-8'})

这样可以避免乱码问题的出现。

最后,我们需要将爬虫代码保存到一个Python文件中,并在虚拟环境中运行它。具体步骤如下:

  1. 在虚拟环境中创建一个名为spider.py的Python文件:
touch spider.py
  1. 使用vim或其他文本编辑器打开spider.py文件,并将上述代码复制到文件中。

  2. 保存文件并退出编辑器。

  3. 在虚拟环境中运行spider.py文件:

python spider.py

这样就可以启动爬虫程序,获取所有软科大学排名的学校信息了。