利用Python爬取国家水稻数据中心的品种数据

利用Python爬取国家水稻数据中心的品种数据

  • 一.页面获取
    python可以进行对网页的访问,主要用到requests,beautifulsoup4包。
    首先新建一个page的py文件,用来获取页面的数据。
import requests
import bs4
import re
import math

def get_page(url, coding):  # 创建一个函数,用来获取BS4格式的文档,并返回整个页面。
    # 主要有两个参数,url代表网页地址,coding代表页面编码格式
    from fake_useragent import UserAgent # 调用UserAgent 包,获取用户代理头的值,避免被屏蔽。
    ua = UserAgent()
    headers = {
   "User-Agent": ua.random}
    r = requests.get(url, headers=headers,timeout=15)
    r.encoding = coding  # 用GB2312解码文档
    rt = r.text
    soup = bs4.BeautifulSoup(rt, 'lxml')  # HTML文档字符串  HTML解析器  HTML文档编码
    return soup

def get_numdata(data):  # 创建一个函数,用来接收BS4格式的文档,并返回具体的页数。
    con = data.find_all(name='caption') # 查询文档中 name='caption' 的标签
    com = con[0].next.next  # 查询历年审定品种的数量
    s = re.findall("\d+", com)[0]  # 正则表达式提取数字
    z = math.floor((int(s) - 1) / 35) + 1  # 计算页数,当数字是35的时候,需要-1除以35再+1得到1页
    # 为什么是35,是因为页面中的数据共35行
    return z

def get_head(data):  # 创建一个函数,用来接收BS4格式的文档,并返回Excel的表头。
    Head = data.find_all(name='tr', align="left")  # 查表头:搜索文档中的tr标签,且符合类 align="left" 的tag
    x = Head[0].contents  # 获取标签 tr 的内容
    y = '网址'
    head_1 = [x[0].next.next, x[1].next.next, y, x[2].next.next, x[3].next.next, x[4].next.next, x[5].next.next]
    head_2 = ['全生育期', '株高', '穗长', '每亩有效穗', '每穗总粒数', '结实率', '千粒重',
              '整精米率', '垩白粒率', '垩白度', '直链淀粉含量', '胶稠度', '长宽比']
    head = head_1 + head_2  # 得到Excel表头的list
    return head

def get_province(data):  # 用来获取省份和网址并建立字典
    url2 = 'http://www.ricedata.cn/variety/' # 获取省份的网址前缀
    con = data.find_all(name='a', target="_blank"
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值