大学软科爬取,数据进行爬取,并传入列表,并进行下载,提取出相应的信息
该回答引用ChatGPT
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)
f(x)=1.0∗H+1.0∗W−100.0∗BFP(1.0)f(x)=1.0*H+1.0*W-100.0*BFP\tag{1.0}f(x)=1.0∗H+1.0∗W−100.0∗BFP(1.0)
y={1,f(x)≥200;0,f(x)<200,(1.1)y=\begin{cases} 1, & f(x)≥200; \\ 0, & f(x)<200, \end{cases}\tag{1.1}y={1,0,f(x)≥200;f(x)<200,(1.1)
用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库。具体步骤如下:
pip install virtualenv
virtualenv myenv
source myenv/bin/activate
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文件中,并在虚拟环境中运行它。具体步骤如下:
touch spider.py
使用vim或其他文本编辑器打开spider.py文件,并将上述代码复制到文件中。
保存文件并退出编辑器。
在虚拟环境中运行spider.py文件:
python spider.py
这样就可以启动爬虫程序,获取所有软科大学排名的学校信息了。