python简单爬数据(这两个成功了)

这两个做的比较早,也比较幸运,成功做出来了,把代码扔在这里

老师叫我从两个网站上弄点数据,数据不多,但是要分月份,小时,经度,纬度,虽然不用排列组合还是挺麻烦的

人生苦短,我用Python

之前就大半年前看了看语法,没有实践过,数据的网页也比较简单,也算是拿来练练手



代码里面已经包含了目标网址,就不具体介绍了,保存下来的是网页,还需要一个脚本来处理一下,这个比较简单也就不放了。

1

#!usr/bin/python

import requests
import time
import sys

#-------- 配置以选择要爬的东西
#‘hour‘, ‘month‘, ‘latitude‘, ‘longitude‘
sel = ‘longitude‘
#--------

web_url = r‘https://omniweb.gsfc.nasa.gov/vitmo/iri2012_vitmo.html‘ #IRI2012
request_url = r‘https://omniweb.gsfc.nasa.gov/cgi/vitmo/vitmo_model.cgi‘
#filepath = sys.path[0] + ‘\\dataaa_‘ + time.strftime("%Y%m%d%H%M%S", time.localtime()) + ‘.txt‘
filepath = sys.path[0] + ‘\\data_iri2012_raw_‘ + sel + ‘.txt‘
print(filepath)
fid = open(filepath, ‘w‘, encoding = ‘utf-8‘)

headers = {#POST /cgi/vitmo/vitmo_model.cgi HTTP/1.1
           ‘Host‘ : ‘omniweb.gsfc.nasa.gov‘,
           ‘User-Agent‘ : ‘Mozilla/5.0 (Windows NT 6.1; rv:53.0) Gecko/20100101 Firefox/53.0‘,
           ‘Accept‘ : ‘text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8‘,
           ‘Accept-Language‘ : ‘zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3‘,
           ‘Accept-Encoding‘ : ‘gzip, deflate, br‘,
           ‘Content-Type‘ : ‘application/x-www-form-urlencoded‘,
           ‘Content-Length‘ : ‘452‘,
           ‘Referer‘ : ‘https://omniweb.gsfc.nasa.gov/vitmo/iri2012_vitmo.html‘,
           ‘Cookie‘ : ‘_ga=GA1.4.167527256.1494290145; _gid=GA1.4.2137494148.1494290145; _gat_GSA_ENOR0=1‘,
           ‘Connection‘ : ‘keep-alive‘,
           ‘Upgrade-Insecure-Requests‘ : ‘1‘,
           ‘Pragma‘ : ‘no-cache‘,
           ‘Cache-Control‘ : ‘no-cache‘
           }

payload = {‘model‘ : ‘iri_2012‘,
           ‘year‘ : ‘2016‘,        #年
           ‘month‘ : ‘12‘,         #月
           ‘day‘ : ‘01‘,           #日
           ‘time_flag‘ : ‘1‘,
           ‘hour‘ : ‘8‘,           #时
           ‘geo_flag‘ : ‘0.‘,
           ‘latitude‘ : ‘50.‘,     #纬
           ‘longitude‘ : ‘40.‘,    #经
           ‘height‘ : ‘100.‘,      #高
           ‘profile‘ : ‘1‘,
           ‘start‘ : ‘100.‘,       #起始
           ‘stop‘ : ‘1000.‘,       #结束
           ‘step‘ : ‘50.‘,         #步长
           ‘sun_n‘ : ‘‘,
           ‘ion_n‘ : ‘‘,
           ‘radio_f‘ : ‘‘,
           ‘radio_f81 ‘ :‘‘,
           ‘htec_max‘ : ‘‘,
           ‘ne_top‘:‘0.‘,
           ‘imap‘ : ‘0.‘,
           ‘ffof2‘ : ‘0.‘,
           ‘ib0‘ : ‘2.‘,
           ‘probab‘ : ‘0.‘,
           ‘fauroralb‘ : ‘1.‘,
           ‘ffoE‘ : ‘1.‘,
           ‘dreg‘ : ‘0.‘,
           ‘tset‘ : ‘0.‘,
           ‘icomp‘ : ‘0.‘,
           ‘nmf2‘ : ‘0.‘,
           ‘hmf2‘ : ‘0.‘,
           ‘user_nme‘ : ‘0.‘,
           ‘user_hme‘ : ‘0.‘,
           ‘format‘ : ‘0‘,
           ‘vars‘ : [‘17‘, ‘19‘, ‘20‘, ‘21‘],#Ne,Tn,Ti,Te : 电子密度,中子温度,离子温度,电子温度
           ‘linestyle‘ : ‘solid‘,
           ‘charsize‘ : ‘‘,
           ‘symbol‘ : ‘2‘,
           ‘symsize‘ : ‘‘,
           ‘yscale‘ : ‘Linear‘,
           ‘xscale‘ : ‘Linear‘,
           ‘imagex‘ : ‘640‘,
           ‘imagey‘ : ‘480‘
           }

payload[‘year‘] = ‘2016‘
payload[‘month‘] = ‘12‘
payload[‘day‘] = ‘01‘
payload[‘hour‘] = ‘8‘
payload[‘longitude‘] = ‘120‘
payload[‘latitude‘] = ‘60‘
payload[‘start‘] = ‘60‘
payload[‘stop‘] = ‘1000‘
payload[‘step‘] = ‘1‘

count = 0

hours = range(1, 25)
months = range(1, 13)
latitudes = range(-90, 100, 10)
longitudes = range(0, 360, 10)
dic = {‘hour‘ : hours,
       ‘month‘ : months,
       ‘latitude‘ : latitudes,
       ‘longitude‘ : longitudes
       }

items = dic[sel]
itemname = sel

for item in items:
    payload[itemname] = str(item)
    fid.write(‘\n#===================== ‘ + str(item) + ‘ =====================\n‘)
    TOGET = True
    while TOGET:
        TOGET = True
        try:
            print(‘\n===================== ‘ + str(item) + ‘ =====================\n‘)
            count = count + 1
            print(‘count : ‘ + str(count))
            r = requests.post(request_url, data = payload, headers = headers)#这里如果出错是不会向下执行的
            fid.write(r.text)
            TOGET = False
        except Exception as e:
            print(e)
            TOGET = True
    fid.write(‘\n--------------------- ‘ + str(item) + ‘ ---------------------\n‘)

fid.close();

2

#!usr/bin/python

import requests
import time
import sys

#-------- 配置以选择要爬的东西
#‘hour‘, ‘month‘, ‘latitude‘, ‘longitude‘
sel = ‘longitude‘
#--------

web_url = r‘https://ccmc.gsfc.nasa.gov/modelweb/models/nrlmsise00.php‘
request_url = r‘https://ccmc.gsfc.nasa.gov/cgi-bin/modelweb/models/vitmo_model.cgi‘
#filepath = sys.path[0] + ‘\\dataaa_‘ + time.strftime("%Y%m%d%H%M%S", time.localtime()) + ‘.txt‘
filepath = sys.path[0] + ‘\\data_nrmlsise_raw_‘ + sel + ‘.txt‘
print(filepath)
fid = open(filepath, ‘w‘, encoding = ‘utf-8‘)

headers = {#POST /cgi-bin/modelweb/models/vitmo_model.cgi HTTP/1.1
           ‘Host‘: ‘ccmc.gsfc.nasa.gov‘,
           ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 6.1; rv:53.0) Gecko/20100101 Firefox/53.0‘,
           ‘Accept‘: ‘text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8‘,
           ‘Accept-Language‘: ‘zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3‘,
           ‘Accept-Encoding‘: ‘gzip, deflate, br‘,
           ‘Content-Type‘: ‘application/x-www-form-urlencoded‘,
           ‘Content-Length‘: ‘296‘,
           ‘Referer‘: ‘https://ccmc.gsfc.nasa.gov/modelweb/models/nrlmsise00.php‘,
           ‘Cookie‘: ‘__utma=35212851.490003371.1494462808.1494462808.1494462808.1; __utmb=35212851.12.10.1494462808; __utmc=35212851; __utmz=35212851.1494462808.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmt=1‘,
           ‘Connection‘: ‘keep-alive‘,
           ‘Upgrade-Insecure-Requests‘: ‘1‘,
           ‘Cache-Control‘: ‘max-age=0‘
           }

payload = {‘model‘ : ‘nrlmsise‘,
           ‘year‘ : ‘2016‘,
           ‘month‘ : ‘12‘,
           ‘day‘ : ‘01‘,
           ‘time_flag‘ : ‘1‘,
           ‘hour‘ : ‘8‘,
           ‘geo_flag‘ : ‘0.‘,
           ‘latitude‘ : ‘60‘,
           ‘longitude‘ : ‘120‘,
           ‘height‘ : ‘100.‘,
           ‘profile‘ : ‘1‘,
           ‘start‘ : ‘60.‘,
           ‘stop‘ : ‘1000.‘,
           ‘step‘ : ‘10.‘,
           ‘f10_7‘ : ‘‘,
           ‘f10_7_3‘ : ‘‘,
           ‘ap‘ : ‘‘,
           ‘format‘ : ‘0‘,
           ‘vars‘ : [‘08‘, ‘09‘, ‘10‘],#O,N2,O2 : 氧原子,氮分子,氧分子
           ‘linestyle‘ : ‘solid‘,
           ‘charsize‘ : ‘1.0‘,
           ‘symbol‘ : ‘2‘,
           ‘symsize‘ : ‘1.0‘,
           ‘yscale‘ : ‘Lin‘,
           ‘xscale‘ : ‘Lin‘,
           ‘imagex‘ : ‘640‘,
           ‘imagey‘ : ‘480‘,
           }

payload[‘year‘] = ‘2016‘
payload[‘month‘] = ‘12‘
payload[‘day‘] = ‘01‘
payload[‘hour‘] = ‘8‘
payload[‘longitude‘] = ‘120‘
payload[‘latitude‘] = ‘60‘
payload[‘start‘] = ‘60‘
payload[‘stop‘] = ‘1000‘
payload[‘step‘] = ‘1‘

count = 0

hours = range(1, 25)
months = range(1, 13)
latitudes = range(-90, 100, 10)
longitudes = range(0, 360, 10)
dic = {‘hour‘ : hours,
       ‘month‘ : months,
       ‘latitude‘ : latitudes,
       ‘longitude‘ : longitudes
       }

items = dic[sel]
itemname = sel

for item in items:
    payload[itemname] = str(item)
    fid.write(‘\n#===================== ‘ + str(item) + ‘ =====================\n‘)
    TOGET = True
    while TOGET:
        TOGET = True
        try:
            print(‘\n===================== ‘ + str(item) + ‘ =====================\n‘)
            count = count + 1
            print(‘count : ‘ + str(count))
            r = requests.post(request_url, data = payload, headers = headers)#这里如果出错是不会向下执行的
            fid.write(r.text)
            TOGET = False
        except Exception as e:
            print(e)
            TOGET = True
    fid.write(‘\n--------------------- ‘ + str(item) + ‘ ---------------------\n‘)

fid.close();
时间: 2024-10-26 11:18:52

python简单爬数据(这两个成功了)的相关文章

python简单爬数据

失败了,即使跟Firefox看到的headers,参数一模一样都不行,爬出来有网页,但是就是不给数据,尝试禁用了js,然后看到了cookie(不禁用js是没有cookie的),用这个cookie爬,还是不行,隔了时间再看,cookie的内容也并没有变化,有点受挫,但还是发出来,也算给自己留个小任务啥的 如果有大佬经过,还望不吝赐教 另外另两个网站的脚本都可以用,过会直接放下代码,过程就不说了 目标网站 http://www.geomag.bgs.ac.uk/data_service/models

一、python简单爬取静态网页

一.简单爬虫框架 简单爬虫框架由四个部分组成:URL管理器.网页下载器.网页解析器.调度器,还有应用这一部分,应用主要是NLP配合相关业务. 它的基本逻辑是这样的:给定一个要访问的URL,获取这个html及内容(也可以获取head和cookie等其它信息),获取html中的某一类链接,如a标签的href属性.从这些链接中继续访问相应的html页面,然后获取这些html的固定标签的内容,并把这些内容保存下来. 一些前提::所有要爬取的页面,它们的标签格式都是相同的,可以写一个网页解析器去获取相应的

爬虫篇-使用cookie,user-agent简单爬数据

爬取网页数据有很多方法,我知道的就有: 1.scrapy框架,创建scrapy框架文件夹,在spider文件写上请求函数,文件保存函数等等 2.导入requests模块请求,写上请求函数和保存函数. 方法很多种,今天这章节是做简单的爬取方式了.根据cookie,user-agent请求数据. 1.导入requests模块 import requests 2.可以写一个函数,也可以直接写代码,本人觉得写函数会比较有秩序.def run():    headers = { def run(): he

python简单爬去油价信息发送到公众号

基于这段时间广州的油价变化的比较大,所以我自己查看油价的网站也增多了,但是作为一个Programmer来说这不是侮辱吗??能用代码实现的为什么要用人力呢???所以就自己做了一个简单的爬去油价信息的python脚本,后来发现执行脚本还是比较麻烦,就定期每天爬去信息发送到对应的公众号上!话不多说,直接上脚本. (env1) ?  python_scripts cat youjia_wechat.py #!/usr/bin/python #-*- coding:utf-8 -*- #__author_

python 简单爬取图片

现在的网站大多做了反爬处理,找一个能爬的网站还真不容易. 高清的图片很难爬,只能爬一些网站开始录目的小文件图片. 主要要做好隐藏.这里就做一个比较简单的代码试一试 1 import urllib.request 2 import re 3 4 def gethtml(url): 5 page=urllib.request.urlopen(url) 6 html=page.read().decode('utf-8') 7 8 return html 9 10 def getimg(html): 1

Python爬虫爬数据写入到EXCEL中

Python抓数据写到EXCEL中.以前都是写到txt中然后再导入到excel.现在直接写到excel中. #coding=utf-8 import xlwt import requests from bs4 import BeautifulSoup import sys reload(sys)   sys.setdefaultencoding('utf8')  #打开excel文件 data=xlwt.Workbook() #获取其中的一个sheet table=data.add_sheet(

Python爬虫爬数据写入到文件

#coding=utf-8 import requests from bs4 import BeautifulSoup import sys reload(sys)   sys.setdefaultencoding('utf8')  r=requests.get('http://html-color-codes.info/color-names/') html=r.text #print html soup=BeautifulSoup(html,'html.parser') trs=soup.f

Python 连接ORACLE数据的两个问题

环境 win7(64)+ Python 2.7.5 +cx_Oracle-5.1.3-11g.win-amd64-py2.7 1.dll 不是有效的 win32 应用程序 import cx_Oracle 后运行报错 "dll 不是有效的 win32 应用程序" 经查发现ORACLE的客户端用的是32位的,装好64位的客户端后将安装目录下的OCI.DLL 拷一份大盘Python lib/libsite-packages 目录下即可. 2.InterfaceError: Unable t

LintCode Python 简单级题目 451.两两交换链表中的节点

题目描述: 给一个链表,两两交换其中的节点,然后返回交换后的链表. 您在真实的面试中是否遇到过这个题? Yes 样例 给出 1->2->3->4, 你应该返回的链表是 2->1->4->3. 挑战 你的算法只能使用常数的额外空间,并且不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 标签 链表 题目分析: 你的算法只能使用常数的额外空间,即不能新建链表: 并且不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 创建三个指针: head指向开始交换的