爬虫天气数据是 js 数据怎么录入 excel 啊? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
jin6220
V2EX    Python

爬虫天气数据是 js 数据怎么录入 excel 啊?

  •  
  •   jin6220 2017-10-05 15:52:42 +08:00 4358 次点击
    这是一个创建于 2979 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言    2017-10-06 17:07:33 +08:00
    新问题请问大家:
    给定 20111,20162 这两个数字
    怎么生成 20111,20112,20113,,,,,,,,,201112,,,20162 这之间的年-月时间顺序列表啊?
    网上查的是这样的:
    import datetime

    def datelist(start, end):
    start_date = datetime.date(*start)
    end_date = datetime.date(*end)

    result = []
    curr_date = start_date
    while curr_date != end_date:
    result.append("%04d%02d%02d" % (curr_date.year, curr_date.month, curr_date.day))
    curr_date += datetime.timedelta(1)
    result.append("%04d%02d%02d" % (curr_date.year, curr_date.month, curr_date.day))
    return result

    if __name__ == "__main__":
    print datelist((2014, 7, 28), (2014, 8, 3))

    作者:匿名用户
    链接: https://www.zhihu.com/question/35455996/answer/62834666
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    但是这个是年月日。
    第 2 条附言    2017-10-06 18:23:24 +08:00
    https://json-csv.com/
    最终靠的是这个网址,终于转换了。
    22 条回复    2017-10-06 20:00:33 +08:00
    qiayue
        1
    qiayue  
    PRO
       2017-10-05 15:56:52 +08:00
    掐头去尾就是 json
    112Cookie
        2
    112Cookie  
       2017-10-05 16:07:21 +08:00 via Android
    python 直接写 xls。。
    jin6220
        3
    jin6220  
    OP
       2017-10-05 16:07:43 +08:00
    @qiayue 先把首尾的 var weather_str=、分号去掉,变成 json,再存入表格里吗
    好久没用过把入门级的那点知识也忘了差不多了
    qiayue
        4
    qiayue  
    PRO
       2017-10-05 16:17:59 +08:00
    json 解码之后,再按照 xls 格式去写
    zagreb
        5
    zagreb  
       2017-10-05 16:27:46 +08:00 via iPhone
    jin6220
        6
    jin6220  
    OP
       2017-10-05 16:34:03 +08:00
    @zagreb 谢谢 虽然看不懂啊 ,业余非专业,现在去找找别人的代码看怎么处理类似情况的。
    8qwe24657913
        7
    8qwe24657913  
       2017-10-05 16:43:32 +08:00
    @qiayue #1 然而单引号……好在数据里应该不会出现单双引号,所以无脑 replace 大概也没问题……
    asuraa
        8
    asuraa  
       2017-10-05 18:12:14 +08:00
    保存 csv 不就行了?
    table 标签嘛
    shenyu1996
        9
    shenyu1996  
       2017-10-05 18:23:04 +08:00 via Android
    直接用字符串模板写 cvs 逗号分隔, 好像 /d/n 换行来着
    jin6220
        10
    jin6220  
    OP
       2017-10-05 19:07:35 +08:00
    @luodaoyi
    找了个 csv 案例,
    import csv
    with open('names.csv','w') as csvfile:
    fieldnames = ['first_name','last_name']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
    writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
    writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})

    但是,天气那个 js 数据怎么每一天数据单独写入一行啊?

    fieldnames = ['Ymd',‘ bWendu',’ yWendu',’ fengxiang','fengli ’]
    然后继续把每个日期的数据像字典这样放进吗?
    ‘ ymd:'2011-02-01',’ bWendu ‘:'9℃',’ yWendu ‘:'0℃',’ tianqi ‘:'多云',’ fengxiang ‘:'北风',’ fengli ‘:'微风'
    就是不知道如何完全自动化。。。
    dawnven
        11
    dawnven  
       2017-10-05 19:15:24 +08:00 via Android
    可以正则提取成 csv
    hcymk2
        12
    hcymk2  
       2017-10-05 19:22:59 +08:00
    明显不是 json ,而是 jsonp.
    asuraa
        13
    asuraa  
       2017-10-05 20:08:06 +08:00
    @jin6220 正则提取 json,然后写入就行了。。。
    python 直接用 xlwt 写就行了
    ZXCDFGTYU
        14
    ZXCDFGTYU  
       2017-10-05 20:26:36 +08:00 via iPad
    掐头去尾 json+1
    jin6220
        15
    jin6220  
    OP
       2017-10-05 20:51:01 +08:00
    import xlwt
    #创建 workbook 和 sheet 对象
    workbook = xlwt.Workbook() #注意 Workbook 的开头 W 要大写
    sheet1 = workbook.add_sheet('sheet1',cell_overwrite_ok=True)
    sheet2 = workbook.add_sheet('sheet2',cell_overwrite_ok=True)
    #向 sheet 页中写入数据
    sheet1.write(0,0,'this should overwrite1')
    sheet1.write(0,1,'aaaaaaaaaaaa')
    sheet2.write(0,0,'this should overwrite2')
    sheet2.write(1,2,'bbbbbbbbbbbbb')

    但实际上数据输入不可能是手一个一个录入啊,http://tianqi.2345.com/t/wea_history/js/56294_20112.js ,那么多数据,真不知道怎么自动化输入,这种挫败感让人很让人伤心加恼火。。。
    sola97
        16
    sola97  
       2017-10-05 21:06:24 +08:00 via Android
    @jin6220 一组数据往里添一行就行了,不用定坐标
    mkeith
        17
    mkeith  
       2017-10-05 21:11:33 +08:00 via iPhone
    那么多的天气 API 非要用这个啊?
    y835L9DyC5XD09kq
        18
    y835L9DyC5XD09kq  
       2017-10-05 21:13:18 +08:00 via iPhone
    搞成 json 用 python 写进 excel
    Sapp
        19
    Sapp  
       2017-10-05 21:46:06 +08:00 via Android
    这不就是 json 吗?
    geelaw
        20
    geelaw  
       2017-10-05 22:00:03 +08:00   1
    两个命令用管道连接一下即可

    ConvertFrom-Json | ConvertTo-Csv

    然后 Excel 打开,另存为 xls(x) 即可。

    如果想直接弄成 xls(x),可以用 Excel.Application 对象操作 Excel https://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-object-excel
    jin6220
        21
    jin6220  
    OP
       2017-10-06 17:23:19 +08:00
    手动几次生成了时间列表
    [20111, 20112, 20113, 20114, 20115, 20116, 20117, 20118, 20119, 201110, 201111, 201112,20121, 20122, 20123, 20124, 20125, 20126, 20127, 20128, 20129, 201210, 201211, 201212,20131, 20132, 20133, 20134, 20135, 20136, 20137, 20138, 20139, 201310, 201311, 201312,20141, 20142, 20143, 20144, 20145, 20146, 20147, 20148, 20149, 201410, 201411, 201412,20151, 20152, 20153, 20154, 20155, 20156, 20157, 20158, 20159, 201510, 201511, 201512,20161, 20162,201603, 201604, 201605, 201606, 201607, 201608, 201609, 201610, 201611, 201612,201701, 201702, 201703, 201704, 201705, 201706, 201707, 201708, 201709]
    xieranmaya
        22
    xieranmaya  
       2017-10-06 20:00:33 +08:00
    跑起来,以 csv 格式写到文件里
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1060 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 23:25 PVG 07:25 LAX 15:25 JFK 18:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86