资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Python

06 Python网络爬虫 JsonPath实战

Python 更新时间: 发布时间: 计算机考试归档 最新发布

06 Python网络爬虫 JsonPath实战

需求:

爬取中国大学排名网站的数据,并将学校名称、英文名称、标签、种类、城市、评分和排名保存到 MySQL 数据库中

编码思路:

  1. 设置要爬取的网址,以及请求头信息。
  2. 定义函数 getZHDX(),使用 requests 库发送请求获取网页数据,并将返回的 JSON 数据解析为 Python 对象。然后使用 jsonpath 库对数据进行筛选,获取学校名称、英文名称、标签、种类、城市、评分和排名,并将学校名称保存到名为 "name.json" 的 JSON 文件中。
  3. 定义函数 saveData(),连接 MySQL 数据库,获取游标,遍历获取到的数据,处理标签和英文名称,并将数据插入到数据库中。最后关闭游标和连接,并提交更改。
  4. 在主函数中调用 getZHDX() 函数,执行爬取和保存数据的操作。
'''JsonPath实战-最好的大学需求:    1.将学校名称存储为name.json    2.名称数据存储        nameList    univNameCn        enList      univNameEn        tagList     univTags        categoryList univCategory        provinceList province        scoreList    score        rankList     ranking    3.将所获取的信息全部存储到mysql数据库中        caipiao===>univ        id,name,en,tag,category,province,score,rank'''import requests,json,jsonpath,pymysql# 1.设置urlurl = "https://www.shanghairanking.cn/api/pub/v1/bcur?bcur_type=11&year=2023"# 2.设置用户代理headers  ={    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"}# 3.获取网页的数据def getZHDX():    # 3.1 获取响应文件对象    response = requests.get(url=url,headers=headers)    # 3.2 解码操作    response.encoding = "utf-8"    # 3.3 获取网页数据    html = response.text    # 3.4 将json格式转换为python的类型    jsonObj = json.loads(html)    # 3.5 查询学校名称    nameList = jsonpath.jsonpath(jsonObj,'$..univNameCn')    # 3.6 查询学校英文名称    enList = jsonpath.jsonpath(jsonObj,'$..univNameEn')    # 3.7 查看学校的标签    tagList = jsonpath.jsonpath(jsonObj,'$..univTags')    # 3.8 查看学校的种类    categoryList = jsonpath.jsonpath(jsonObj, '$..univCategory')    # 3.9 查询学校的城市    provinceList = jsonpath.jsonpath(jsonObj,'$..province')    # 3.10 查看学校的评分    scoreList = jsonpath.jsonpath(jsonObj,'$..score')    # 3.11 查看学校的排名    rankList = jsonpath.jsonpath(jsonObj,'$..ranking')    # 3.12 将学校名称保存到json文件中    json.dump(nameList,open("name.json",'w'),ensure_ascii=False)    # 3.13 将所有的数据进行数据库保存    saveData(nameList,enList,tagList,categoryList,provinceList,scoreList,rankList)# 4.保存到数据库def saveData(nameList,enList,tagList,categoryList,provinceList,scoreList,rankList):    # 4.1建立通道    conn = pymysql.connect(        host="127.0.0.1",        user="root",        password="1111"    )    # 4.2选择数据库    conn.select_db("caipiao")    # 4.3 获取游标    cur = conn.cursor()    # 4.4 循环遍历    for i in range(0,len(nameList)):        # 4.4.1 处理学校的标签类型        tagData = ""        for tag in tagList[i]:            tagData += tag            tagData += ","        # 4.4.2 处理学校的英文        en = str(enList[i].replace("'",""))        # 4.4.3 设置sql语句        sql = "insert into univ values(null,'%s','%s','%s','%s','%s',%f,'%s')"                %(nameList[i],en,tagData,categoryList[i],provinceList[i],scoreList[i],rankList[i])        print(sql)        # 4.4.5 执行        cur.execute(sql)    # 4.5 关闭    cur.close()    conn.commit()    conn.close()if __name__ == '__main__':    getZHDX()
转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1096398.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【06 Python网络爬虫 JsonPath实战】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2