python 爬取研招网并写入CSV文件

本文详细介绍了使用Python爬虫从中国研究生招生信息网抓取大学、归属地和隶属信息。通过设置请求头模拟浏览器行为,解析HTML获取总页数,并遍历每一页的数据,将结果保存到CSV文件中。爬虫代码实现包括获取目标字段、处理数据和避免被封禁的策略。最后,作者强调了爬虫使用的合法性和合规性。
摘要由CSDN通过智能技术生成

前言:

爬取目标:

  • 获取总页数
  • 获取“大学”字段
  • 获取“归属地”字段
  • 获取”隶属“字段

倒包~~

import csv
import time
import requests
import urllib.parse
from lxml import etree
from fake_useragent import UserAgent

获取总页数

这里使用了一次请求,来获取总页数

# 为了得到页数
url='https://yz.chsi.com.cn/sch/'
res=requests.get(url).text
dom=etree.HTML(res)
get_page = dom.xpath('//*[@class="ch-page clearfix"]/li[8]/a/text()')
page_num = int(get_page[0])

获取需要的字段

Url_page_num = 0  # url页码
for i in range(1, page_num):

    url = "https://yz.chsi.com.cn/sch/search.do?start={}".format(Url_page_num) # 第一次循环为 0,第二次为20,第三次 40, 60
    
    res=requests.get(url).text  # 请求
    dom=etree.HTML(res)  # 解析
    
    for list_num in range(1,19): #循环一页的所有数据
        result = []  #每一行的结果暂时保存到这个列表
        
        result.append(dom.xpath('//*[@class="yxk-table"]/table/tbody/tr[{}]/td[1]/a/text()'.format(list_num))[0].strip()) # 大学名称添加到结果 
        if University is None:  # 因为最后一页数据行数不足19,所以到最后一页时,爬取为空就跳过
            pass
        result.append(dom.xpath('//*[@class="yxk-table"]/table/tbody/tr[{}]/td[2]/text()'.format(list_num))[0]) # 所在地放入结果列表
        result.append(dom.xpath('//*[@class="yxk-table"]/table/tbody/tr[{}]/td[3]/text()'.format(list_num))[0]) # 隶属放入结果
        print(result)
        # 然后将这一行的结果存入csv
        with open("zsyx.csv", "a+") as f:
            writer = csv.writer(f, dialect="excel")
            # 基于文件对象构建 csv写入对象
            csv_write = csv.writer(f)
            csv_data = result # 存入
            csv_write.writerow(csv_data)
            f.close()
        time.sleep(1)
    Url_page_num += 20  # 此时这一页就爬完了,我们要爬第下一页了~~那么网址肯定不一样啊~~,所以要改变一点东西,每一页的差值是20,所以下一页我们要加20

结果(部分截图):

结果

在这里插入图片描述

最后(爬虫)声明:

我贼怂, 如果本篇文章涉及了某平台的利益,请联系我,立马删除
本篇仅供参考学习,如若用于商业用途,后果自负.

郑重声明:本项目及所有相关文章,仅用于经验技术交流,禁止将相关技术应用到不正当途径,因为滥用技术产生的风险与本人无关。

Smile
如果对你有帮助的话,记得留个赞哦~~
  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值