中国作物种质信息网-小麦数据源

  • 前言
  • 分析
  • 获取一页数据
  • 多线程获取多页面
  • 存入CSV文件
  • 完整代码
  • 结果展示
  • 后序

前言

最近项目需要获取小麦数据源,因此着手《中国作物种质信息网》的数据爬取。

link:https://www.cgris.net/default.asp#

分析

  • 进入小麦专区后:link


可以根据小麦相应字段进行指定查询 (若不选择则默认显示全部字段)

  • 选择默认查询,则获得全部的小麦信息


哇哦!

22058条数据,够了够了!

  • 检查页面源代码


发现里面没有我们需要的内容,可以猜测,该内容是服务器二次发送来的,而且可能是进行数据库的查询操作。

  • 源代码没有数据,只能考虑数据抓包

  • F12 --> Network --> Fetch


刷新之后,发现第一个数据包里面,好像与字段库编号对应。

  • 查看下一个数据包


这不就是数据嘛!

  • 获取请求url及请求方式post

Request URL: https://www.cgris.net/query/o.php

  • 查看post请求的Form Data


有了这些就上代码吧!

获取一页数据

# 获取一页的小麦数据
def getData(url, index):# 请求头headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4542.2 Safari/537.36','Referer': url  # 防盗链}data = {'action': 'item','p': f'MY0{index}','croptype': '["粮食作物", "小麦"]',}# 获取post请求对象resp = requests.post(url, headers=headers, data=data)

多线程获取多页面

# 获取大小50的线程池
with ThreadPoolExecutor(3) as pool:for i in range(1390, 2000):pool.submit(getData, url=url, index='%05d'%i)time.sleep(3)

存入CSV文件

# 获取csv文件
file = open('./wheat.csv', mode='a', encoding='utf-8', newline='')
# 建立一个字典写入对象,并指定列名fieldnames
csvWriter = csv.DictWriter(file, fieldnames=fieldnames)
# 写入表头
csvWriter.writeheader()

完整代码

# 爬取小麦数据
# MY0:14400
"""
action: item
p: MY014200
croptype: ["粮食作物", "小麦"]
_:
"""
'''
Referer: https://www.cgris.net/query/do.php
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4542.2 Safari/537.36
'''import requests
import csv
from concurrent.futures import ThreadPoolExecutor
import time# 设置表头
fieldnames = ['库编号', '统一编号', '保存单位', '品种名称', '译名', '科名', '属名', '学名', '系谱', '育成年限', '原产地', '高程', '东经', '北纬', '来源国','芒', '壳色', '粒色', '冬春性', '成熟期', '穗粒数', '穗长', '株高', '千粒重', '粗蛋白', '赖氨酸', '沉淀值', '硬度', '容重', '抗旱性','耐涝性', '芽期耐盐', '苗期耐盐', '田间抗寒性', '人工抗寒性', '条锈严重度', '条锈反应型', '条锈普遍率', '叶锈严重度', '叶锈反应型', '叶锈普遍率','秆锈严重度', '秆锈反应型', '秆锈普遍率', '白粉严重度', '白粉反应型', '黄矮病', '赤霉病病穗', '赤霉病病指', '赤霉病指数', '赤霉病抗性', '根腐叶病级','根腐穗病级', '其它', '省', '样品类型']# 获取csv文件
file = open('./wheat.csv', mode='a', encoding='utf-8', newline='')
# 建立一个字典写入对象,并指定列名fieldnames
csvWriter = csv.DictWriter(file, fieldnames=fieldnames)
# 写入表头
csvWriter.writeheader()# 获取一页的小麦数据
def getData(url, index):# 请求头headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4542.2 Safari/537.36','Referer': url  # 防盗链}data = {'action': 'item','p': f'MY0{index}','croptype': '["粮食作物", "小麦"]',}# 获取post请求对象resp = requests.post(url, headers=headers, data=data)# 写入数据csvWriter.writerow(resp.json())print('库编号', data['p'], '爬取完毕!')if __name__ == '__main__':# 访问地址url = 'https://www.cgris.net/query/o.php'# 获取大小50的线程池with ThreadPoolExecutor(3) as pool:for i in range(1390, 2000):pool.submit(getData, url=url, index='%05d'%i)time.sleep(3)# 关闭文件流,确保数据正常写入file.close()

结果展示


后序

不过请注意,实践时,你会发现数据下载特别缓慢,因为服务器的缘故吧,如果你开的线程数过多,或者同时请求次数过多,会导致服务器崩溃的,因此建议,线程尽量开少点,每个线程间 sleep() 几秒。

我刚开始就直接把服务器给搞崩了(负罪)o(╥﹏╥)o

正是因为这个原因,我要换其他方法,二战《中国作物种质信息网》

加油!

感谢!

努力!

一战《中国作物种质信息网》(再也不怕没有小麦数据源了)相关推荐

  1. python爬虫实战(一)--------中国作物种质信息网

    相关代码已经修改调试成功----2017-4-1 目标网址:http://www.cgris.net/query/croplist.php 实现:爬取相关信息如图所示,爬取的数据存入mysql数据库. ...

  2. 空白世界地图打印版_考研准考证打印什么时候_中国研究生招生信息网官网

    考研准考证打印什么时候_中国研究生招生信息网官网由广东研究生考试网考试快讯栏目由提供,更多关于考研准考证打印入口,广东研究生考试快讯的内容,请关注广东研究生考试频道/广东人事考试网! 2021考研人注 ...

  3. 2016计算机考研330分,考研330分什么概念_中国研究生招生信息网官方

    考研330分什么概念_中国研究生招生信息网官方由广东研究生考试网考试快讯栏目由提供,更多关于考研330分什么概念,中国研究生招生信息网官方,广东研究生考试快讯的内容,请关注广东研究生考试频道/广东人事 ...

  4. 中国研究生招生信息网登陆服务器错误,2019考研网上报名填写信息常见问题及解决办法...

    网上报名的步骤很多,需要填写的内容也很多,对于初次考研报名的考生来说总是会有些战战兢兢,生怕填错信息影响报名,为此,东湖武大考研网特意整理收集了2018年考研网上报名填写信息常见问题及解决办法,这些解 ...

  5. 考研计算机350分相当于什么水平,考研350分什么水平_中国研究生招生信息网登录...

    考研350分什么水平_中国研究生招生信息网登录由广东研究生考试网考试快讯栏目由提供,更多关于考研350分什么水平,中国研究生招生信息网登录,广东研究生考试快讯的内容,请关注广东研究生考试频道/广东人事 ...

  6. 计算机专业英语一国家线,考研分数线2021国家线英语一_中国考研招生信息网官网...

    考研分数线2021国家线英语一_中国考研招生信息网官网由广东研究生考试网考试快讯栏目由提供,更多关于考研分数线2021国家线英语一,中国考研招生信息网官网,广东研究生考试快讯的内容,请关注广东研究生考 ...

  7. 2021华科计算机考研分数线,2021华科考研分数线_中国研究生招生信息网官网

    2021华科考研分数线_中国研究生招生信息网官网由广东研究生考试网考试快讯栏目由提供,更多关于考研成绩查询时间,研招网,广东研究生考试快讯的内容,请关注广东研究生考试频道/广东人事考试网! 云南省20 ...

  8. cip查询(中国新闻出版信息网cip查询)

    如何查询图书是否正版及CIP查询方法 查询CIP可以去新闻出版总署网站或中国版本图书馆官网查询.新闻出版总署→办事服务→便民查询→新闻出版产品查询→CIP数据核字号验证→输入年份和六位数核字号.验证码 ...

  9. 【图文】如何在学信网申请在线验证报告?包括-教育部学籍在线验证报告-教育部学历证书电子注册备案表 in 中国高等教育学生信息网

    步骤(图示) (1 / 7) (2 / 7) (3 / 7) (4 / 7) (5 / 7) (6 / 7) (7 / 7) 步骤(文字) 打开学信网 https://www.chsi.com.cn/ ...

最新文章

  1. numpy.divide详解
  2. IT规划的企业应用实践(8)研究的目的和意义 之 解决两大矛盾
  3. 【模拟】pjesma(jzoj 1151)
  4. sixxpack破解的文章!【转】
  5. 【AI视野·今日Robot 机器人论文速览 第十四期】Thu, 24 Jun 2021
  6. C++ 採集音频流(PCM裸流)实现录音功能
  7. PHP7 pecl 安装 mongodb扩展 和 PHPLIB
  8. 12.2 asmca fails with 'ORA-00845'
  9. PHP接口报错:500服务器错误
  10. 向linux内核提交了第一个patch,在3.8中发布,庆祝一下!
  11. 好用的电脑录屏软件!来看看这几款!
  12. JavaWeb使用cookie实现记住密码,密码加密
  13. 6亿债务年底还完,老罗“真还传”即将完结
  14. javaweb实现即时消息推送功能
  15. 为什么我怎么也理解不了波粒二象性,是因为智商不够吗?
  16. 【QT】FillRect填充的区域实现部分区域透明
  17. 【JZOJ 省选模拟】死星(deathstar )
  18. 华为网页手机云服务器,华为Cloud 云服务
  19. android 拍照,图库,相册,上传
  20. SpringBoot整合MybatisPlus实战动态SQL,java定时器实现原理

热门文章

  1. Js-写一个函数,实现反转任意数组
  2. 经典按键java手机游戏_能玩游戏的手机壳你见过吗?26款经典游戏玩到停不下来...
  3. 大金空调自动关机常见四种原因
  4. LeetCode 299. 猜数字游戏
  5. Prometheus Metrics 设计的最佳实践和应用实例,看这篇够了!
  6. SVM人脸样本训练检测流程
  7. 如何提臀(瑜伽提臀方法)
  8. PCM音频流多通道分离
  9. gerrit 缺少change-Id
  10. 银河英雄传说(边带权并查集)