资源简介
新浪财经24小时python爬虫程序,内置自动推送到企业微信的群机械人的功能。适合微信企业群使用。爬虫仅供个人学习研究python使用,请勿使用于商业或非法用途。
代码片段和文件信息
# -*- coding: utf-8 -*-
‘‘‘
version:2.0
代码重新架构,把脚本封装为函数以方便处理数据
增加了测试模块,以防止网络波动导致的代码运行中断
‘‘‘
lastdateid = ‘0‘
import requests
import json
import time
import sys
# 获取最新消息的地址
base_url_new = ‘http://zhibo.sina.com.cn/api/zhibo/feed?\
callback=jQuery0&page=1&page_size=1&zhibo_id=152\
&tag_id=0&dire=f&dpc=1&pagesize=1&_=0%20Request%20Method:GET‘
# 自定义js提取页
‘‘‘
输入请用str格式
oldnum_str:此数字或者是以现在为计时之前的页数
thispagesize:此次取的js数据页的数据数
oldpagesize:原来的js数据页的数据数目
‘‘‘
‘‘‘
#此url的数据中会存在thispagesize_str条信息,比最新信息早 oldnum_str* oldpagesize_str条
#oldnum_str max 527999
‘‘‘
def myurl(oldnum_str thispagesize_str oldpagesize_str):
my_url_a = r‘http://zhibo.sina.com.cn/api/zhibo/feed?\
callback=jQuery0&page=‘
my_url_b = r‘&page_size=‘
my_url_c = r‘&zhibo_id=152&tag_id=0&dire=f&dpc=1&pagesize=‘
my_url_d = r‘&_=0%20Request%20Method:GET‘
my_url = my_url_a + oldnum_str + my_url_b + thispagesize_str + my_url_c + oldpagesize_str + my_url_d # 获取往前的第n条消息
return my_url
i = 1 # 本代码运行后得到的数据量标号
n = 1 # 等待时间标号一个为5s
# 从js数据包中获得json数据
def get_json_str(base_url):
json_str = ‘‘
try:
response = requests.get(base_url timeout=5)
html = response.text
html_cl = html[12:-14]
html_json = eval(html_cl)
json_str = json.dumps(html_json)
except Connectionerror:
print(‘get_json_str得到数据时网络连接有问题,未得到json数据‘) # 此处数据穿送出去为了后期处理
except UnboundLocalError:
print(‘get_json_str您的电脑休眠导致连接中断‘) # 此处数据穿送出去为了后期处理
except Exception as errorname1:
print(‘get_json_str未收录错误类型,请检查网络通断错误位置:‘ errorname1)
# print(errorname1)# 此处数据穿送出去为了后期处理‘‘‘
finally:
return json_str
‘‘‘
json 数据解析函数
输入:json类型的str数据
数出:以数据id作为key的字典
‘‘‘
def json_str_analysis(json_date):
date_dic = {}
try:
python_dic = json.loads(json_date) # 先拆分为主字典
list_str = python_dic[“result“][‘data‘][‘feed‘][‘list‘] # 取数据列表
‘‘‘
重新整定字典
date_dic=
{数据在新浪数据库的id:{‘id‘:
‘rich_text‘:
‘create_time‘:
‘tag‘:{}
}}
‘‘‘
for list_dic in list_str: # 对list的多组数据解析
need_option = [‘id‘ ‘rich_text‘ ‘create_time‘ ‘tag‘] # 定义需求关键词
for listkey in list(list_dic.keys()): # 字典在遍历的时候不能修改元素,此处先编程列表在变回字典
if listkey not in need_option:
list_dic.pop(listkey)
date_dic[list_dic[‘id‘]] = list_dic
except ValueError:
print(‘json_str_analysis json数据格式不对无法解析‘)
except Exception as errorname2: # 将报错存储在errorname2中
- 上一篇:基于python实现的ICA过程
- 下一篇:python实现BM匹配算法
评论
共有 条评论