前言
本文介绍了如何使用 Python 的 requests 库和 BeautifulSoup 库来爬取研究方向信息,并将其保存为 CSV 文件。爬取的网站为“中国研究生招生信息网”(https://yz.chsi.com.cn/)。代码从指定的专业目录页面爬取研究方向的相关信息,并保存为 CSV 文件。
代码
import requests
from bs4 import BeautifulSoup
import re
from fake_useragent import UserAgent# 伪装请求头
ua = UserAgent()url = input('请输入专业目录的url:')
response = requests.get(url, headers={'User-Agent': ua.random})
soup = BeautifulSoup(response.text, 'lxml')# 使用css选择器来查找包含"查看"文本的a标签,并提取其href属性
hrefs = soup.select('a:-soup-contains("查看")')# 解析学校名称和研究方向代码
dwmc = requests.utils.unquote(url.split('&')[1].split('=')[1], 'utf-8')
yjxkdm = url.split('&')[4].split('=')[1]
filename = dwmc + '_' + yjxkdm + '.csv'# 打开文件,如果不存在则创建
f = open(filename, 'w')# 提取href属性,添加上前缀
for href in hrefs:href = 'https://yz.chsi.com.cn' + href['href']response = requests.get(href, headers={'User-Agent': ua.random})soup = BeautifulSoup(response.text, 'lxml')# 提取详情页信息并写入文件a = soup.select('td.zsml-summary')for i in a:f.write(i.text.strip().replace(',', ' ') + ',')b = soup.select('span.zsml-bz')for i in b:f.write(i.text.strip().replace(',', ' ') + ',')c = soup.select('tbody.zsml-res-items')for i in c:cleaned_text = re.sub(r'\s+', ' ', i.text.strip()).replace('见招生简章', '')f.write(cleaned_text.replace(',', ' ') + ',')f.write('\n')# 关闭文件
f.close()
示例
输入内容:
https://yz.chsi.com.cn/zsml/querySchAction.do?ssdm=50&dwmc=%E9%87%8D%E5%BA%86%E5%A4%A7%E5%AD%A6&mldm=08&mlmc=&yjxkdm=0812&xxfs=&zymc=
文件内容: