前言:
爬取目标:
- 获取
总页数
- 获取
“大学”
字段 - 获取
“归属地”
字段 - 获取
”隶属“
字段
倒包~~
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
结果(部分截图):
最后(爬虫)声明:
我贼怂, 如果本篇文章涉及了某平台的利益,请联系我,立马删除
本篇仅供参考学习,如若用于商业用途,后果自负.
郑重声明:本项目及所有相关文章,仅用于经验技术交流,禁止将相关技术应用到不正当途径,因为滥用技术产生的风险与本人无关。
如果对你有帮助的话,记得留个赞哦~~ |