从环境云网站爬取数据

本文介绍如何利用Python脚本技术进行网络爬虫,详细阐述了从环境云网站抓取数据的步骤和方法,包括安装必要的库和执行爬取过程。
摘要由CSDN通过智能技术生成
1、环境云网站:http://www.envicloud.cn/
网站中包含全国各地关于环境方面的数据,我们这次只读取了广东省24小时天气历史数据。
2、关于接口参考环境云帮助页面
3、代码使用python语言实现
4、爬取需要key,免费申请
5、爬取后的数据保存在oracle中,所以需要cx_Oracle插件。
安装方式在https://oracle.github.io/python-cx_Oracle/中查询
我使用命令行执行python -m pip install cx_Oracle --upgrade

即可安装完毕

#coding:utf-8 #用于显示代码中的汉字
'''
简介:
天气数据获取脚本
数据获取流程(需要条件:环境云密钥):
1.首先在数据库中读取需要抓取气象数据的城市数据,这部分也可以直接在环境云网站爬取
2.通过环境云API接口获取天气数据
3.对第二步中产生的JSON格式数据进行处理存入到数据库
'''
import json,sys,urllib2,time,os
import pandas as pd
import cx_Oracle
import datetime

reload(sys)#调用setdefaultencoding时必须要先reload一次sys模块
sys.setdefaultencoding('utf8') 

''' 获取监测站信息(即城市信息。
    这里注意,以广州为例,广州分为广州、番禺、从化、增城、花都等几部分,
    其中广州代表了广州城区。所以这里使用监测站更准确)
    数据表字段说明
    FID    VARCHAR2(20)    Y            序号
    FSITEID    VARCHAR2(20)    Y            监测站号
    FSITENAME    VARCHAR2(20)    Y            监测站名
    FCITYTYPE    VARCHAR2(20)    Y            行政级别
    FCITY    VARCHAR2(20)    Y            市
    FLON    NUMBER(5,2)    Y            经度
    FLAT    NUMBER(5,2)    Y            纬度
    FABOVESEALEVEL    VARCHAR2(20)    Y            海拔
    FADDRNO    VARCHAR2(20)    Y            地域编码
    FDATASOURCE    VARCHAR2(20)    Y            数据来源(1为气候中心数据;2为环境云数据)
'''
def getsitedata(tablename,datasource):
    sitedata = cur.execute("select fsiteid,fsitename,faddrno from %s where fdatasource = '%s'"%(tablename,datasource))
    sitedata = sitedata.fetchall()#接收全部的返回结果行
    return sitedata

''' 获取数据
    参数1:监控站
    参数2:开始日期
    参数3:结束日期
    参数4:环境云key
'''
def getapidata(sitedata,begin_date,end_date,key):

    for site in map(None,sitedata):
        siteid = site[0]#参考getsitedata函数注释,编号
        sitename = site[1]#名字
        siteaddrno = site[2]#所属城市
        site_index = pd.Index(site)
        site_index = site_index.get_loc(siteid)#设置编号。
        ''' 这里或许直接用函数替代none,没有试过
            def add(num):
            return num + 1
 
            rs = map(add, lt)
        '''
        for querydate in pd.date_range(begin_date,end_date):#拆分成每一天
            querydate = str(querydate)[:10]#不使用时间
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
由于网易音乐有反爬措施,需要一些技巧和工具才能爬取数据。以下是一个简单的Python爬虫示例,可以获取网易音乐歌曲的基本信息。 1. 安装必要的库 在Python环境中,需要安装requests和BeautifulSoup库。可以使用pip安装: ``` pip install requests pip install beautifulsoup4 ``` 2. 获取歌曲列表页的HTML 需要先获取歌曲列表页的HTML代码,可以使用requests库发送GET请求并获取响应。 ``` import requests # 歌单ID playlist_id = '123456' # 请求URL url = 'https://music.163.com/playlist?id=' + playlist_id # 请求头部 headers = { 'Referer': 'https://music.163.com/', 'Host': 'music.163.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' } # 发送GET请求 response = requests.get(url, headers=headers) # 获取响应内容 html = response.text ``` 需要注意的是,请求头部中的Referer和Host是必须的,否则会返回403 Forbidden错误。 3. 解析HTML代码 使用BeautifulSoup库解析HTML代码,可以方便地提取所需的信息。 ``` from bs4 import BeautifulSoup # 解析HTML代码 soup = BeautifulSoup(html, 'lxml') # 获取歌曲列表 song_list = soup.find('ul', {'class': 'f-hide'}).find_all('a') # 遍历歌曲列表,获取歌曲信息 for i, song in enumerate(song_list): # 歌曲ID song_id = song['href'].split('=')[-1] # 歌曲名称 song_name = song.text # 歌手名称 artist_name = song.parent.parent.find('a', {'class': 's-fc3'}).text print('{}. {} - {} ({})'.format(i+1, song_name, artist_name, song_id)) ``` 在这个示例中,使用了find和find_all方法来查找HTML标签。需要注意的是,find方法只会返回第一个匹配的标签,而find_all方法会返回所有匹配的标签。 4. 总结 这个示例只是一个简单的爬虫示例,还有很多需要改进的地方。例如,可以使用多线程或异步编程来加速爬取,可以使用代理或随机延时来避免被封IP。此外,还可以爬取更多的信息,例如歌曲的评论、热门评论等。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值