191029_中国地震局爬取

由于是国家网,有好多限制,首先要加User-Agent,之后用正则表达式经行爬取,好久没有用正则了,还是让老师帮忙的

import requests
import pandas as pd 
from lxml import etree
import re
import json
num_mag=[]
orig_time=[]
latitudes=[]
longitudes=[]
depth=[]
epicenter=[]
for i in range(47,49):
    start_url='https://www.cea.gov.cn/eportal/ui?pageId=366509&currentPage={}'.format(i)
    print('保存第{0}页'.format(i))
    header = {
        'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
    }
    response=requests.get(start_url,headers=header).content.decode()
    patten=re.compile('\[.*?\]',re.S)
    pic_list=re.findall(patten,response)
    diss_dict=json.loads(pic_list[0])
    for i in diss_dict:
        num_mag.append(i['num_mag'])#震级 
        orig_time.append(i['orig_time'])#发震时刻
        latitudes.append(i['latitudes'])#纬度
        longitudes.append(i['longitudes'])#经度
        try:
            if i['depth']:
                depth.append(i['depth'])
        except Exception as e:
            print(e)
        epicenter.append(i['epicenter'])#参考位置
data={
    '震级':num_mag,
    '发震时刻':orig_time,
    '纬度':latitudes,
    '深度':depth,
    '位置':epicenter,
}
df=pd.DataFrame(data)

代码还是有问题的,这样最后无法全部保存,还在修改中,如果有大佬看见这片文章,希望帮助下

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值