当前位置: 首页 > news >正文

电商 企业网站 福州文化建设实施方案

电商 企业网站 福州,文化建设实施方案,asp网站配色,怎么提高网站加载速度原题#xff1a; 对应问题视频#xff1a; 实现的效果 不同点 实现的作品和原题要求的不同点 题目要求爬虫获取数据#xff0c;作品中是调库获取所有股票历史数据实时数据使用爬虫的方式爬取指定股票的数据#xff0c;需要实时更新#xff0c;我做了修改#xff0c;改…原题 对应问题视频 实现的效果 不同点 实现的作品和原题要求的不同点 题目要求爬虫获取数据作品中是调库获取所有股票历史数据实时数据使用爬虫的方式爬取指定股票的数据需要实时更新我做了修改改成按下按钮获取分时数据不自动刷新 体会 先AKShare获取数据总是被封IP后改用证券宝股票当天分时数据不好获得这个数据是由服务器主动推送过来的通过监听所有的收发包数据找到了这个规律才获得数据 解答 # python版本要3.9以上akshare才可以获取所有股票数据 # 去掉AKShare改用证券宝接口import pyqtgraph as pg import baostock as bs import pandas as pd import re import numpy as np import json import traceback from threading import Thread from PySide6 import QtWidgets,QtCore,QtGui from datetime import datetime from time import sleep from selenium import webdriver from selenium.webdriver import DesiredCapabilities from selenium.webdriver.chrome.options import Options from datetime import datetime#数据源接口 class StockData:staticmethoddef get_all_stock_code() - pd.DataFrame:# 证券宝接口lg bs.login()# 显示登陆返回信息#print(login respond error_code:lg.error_code)#print(login respond error_msg:lg.error_msg)yesterday (datetime.now() - pd.Timedelta(days1)).strftime(%Y-%m-%d)three_months_ago (datetime.now() - pd.Timedelta(days90)).strftime(%Y-%m-%d)#### 获取交易日信息 ####rs bs.query_trade_dates(start_datethree_months_ago, end_dateyesterday)#print(query_trade_dates respond error_code:rs.error_code)#print(query_trade_dates respond error_msg:rs.error_msg)if rs.error_code! 0:bs.logout()return Nonedata_list []while (rs.error_code 0) rs.next():# 获取一条记录将记录合并在一起data_list.append(rs.get_row_data())result pd.DataFrame(data_list, columnsrs.fields)#从后面开始查找找到一行is_trading_day1的日期trading_days result[result[is_trading_day]1]if trading_days.empty:print(没有交易日数据)bs.logout()return Nonelast_trading_day trading_days.iloc[-1][calendar_date]#print(str(last_trading_day) str(type(last_trading_day)))#获取所有股票代码#### 获取某日所有证券信息 ####rs bs.query_all_stock(daystr(last_trading_day))#print(query_all_stock respond error_code:rs.error_code)#print(query_all_stock respond error_msg:rs.error_msg)#### 打印结果集 ####data_list []while (rs.error_code 0) rs.next():# 获取一条记录将记录合并在一起data_list.append(rs.get_row_data())result pd.DataFrame(data_list, columnsrs.fields)#只保留sz.00开头的sh.60开头的沪深正股数据result result[(result[code].str.startswith(sz.00)) | (result[code].str.startswith(sh.60))]#去掉index列#result.drop(columns[index], inplaceTrue)#panda复制code列重命名为bs_coderesult[bs_code] result[code]#重命名code_name 为nameresult.rename(columns{code_name:name}, inplaceTrue)#将code列前面的sz.或者sh.去掉result[code] result[code].str.replace(sz., )result[code] result[code].str.replace(sh., )#排序result[sort] result[code].astype(int)result.sort_values(bysort, inplaceTrue)result.drop(columns[sort], inplaceTrue)#重置索引result.reset_index(dropTrue, inplaceTrue)#print(result)#### 登出系统 ####bs.logout()return resultstaticmethoddef get_history_data(code:str, start_date:str, end_date:str) - pd.DataFrame:# 证券宝接口lg bs.login()if lg.error_code ! 0:print(证券宝登录失败)return None#### 获取历史行情 ####rs bs.query_history_k_data_plus(code,date,code,open,close,start_datestart_date, end_dateend_date, frequencyd, adjustflag2) #frequencyd取日k线adjustflag3默认不复权#print(query_history_k_data_plus respond error_code:rs.error_code)#print(query_history_k_data_plus respond error_msg:rs.error_msg)#### 打印结果集 ####data_list []while (rs.error_code 0) rs.next():# 获取一条记录将记录合并在一起data_list.append(rs.get_row_data())result pd.DataFrame(data_list, columnsrs.fields)if(result.empty):my_signal.warning_signal.emit(没有查询到数据)bs.logout()return None#修改列类型result[open] result[open].astype(float)result[close] result[close].astype(float)#### 登出系统 ####bs.logout()return resultstaticmethoddef get_realtime_data(code:str) - pd.DataFrame:# 先去掉所有非数字的字符留下来六位数字str对code进行处理如果以60开头添加sh前缀如果以00开头添加sz前缀code .join(char for char in code if char.isdigit())if len(code)! 6:return Noneif code.startswith(60):code sh codeelif code.startswith(00):code sz codeprint(code)options Options()result_df pd.DataFrame(columns[time,price])caps {browserName: chrome,goog:loggingPrefs: {performance: ALL} # 开启日志性能监听}# 将caps添加到options中for key, value in caps.items():options.set_capability(key, value)options.add_argument(--headless) # 无头模式# 启动浏览器driver webdriver.Chrome(optionsoptions)url fhttps://quote.eastmoney.com/concept/{code}.htmlprint(url)driver.get(url)sleep(3) # wait for the requests to take place# extract requests from logslogs_raw driver.get_log(performance)logs [json.loads(lr[message])[message] for lr in logs_raw]def log_filter(log_):return (# is an actual responselog_[method] Network.eventSourceMessageReceived)for log in filter(log_filter, logs):try:#判断log中params是否存在,且params中是否存在dataif params not in log or data not in log[params]:continuedata json.loads(log[params][data])#先判断data是否存在,且data-trends是否存在if data not in data or trends not in data[data]:continuedata data[data][trends]#判断data是否是listif isinstance(data, list):for item in data:arr item.split(,)t datetime.strptime(str(arr[0]),%Y-%m-%d %H:%M)#判断时间是否在9:30-11:30 13:00-15:00之间if (t.hour 9 and t.minute 30):continueif(t.hour 15 and t.minute 0):continueif(t.hour 12):continueif(t.hour 11 and t.minute 30):continue#双重保险if (t.hour 9 and t.minute 30) or (t.hour 10) :avg round((float(arr[1]) float(arr[2]))/2,2)new_row pd.DataFrame([[t,avg]],columns[time,price],index[0])if result_df.empty:result_df new_rowelse:result_df pd.concat([result_df, new_row],ignore_indexTrue)except Exception as e:print(log)print(traceback.print_exc())passdriver.quit()#print(result_df)if result_df.empty:return Nonereturn result_df#信号库 class MySignal(QtCore.QObject):combox_update_signal QtCore.Signal()history_area_data_signal QtCore.Signal()realtime_area_data_signal QtCore.Signal()warning_signal QtCore.Signal(str) # start_timer_signal QtCore.Signal() # Stop_timer_signal QtCore.Signal() #信号的实例化 my_signal MySignal()#主界面 class MainWindow(QtWidgets.QWidget):def __init__(self):super().__init__()# 数据用panda处理self.stock_code_df : pd.DataFrame None #股票代号数据self.history_data_df : pd.DataFrame None #历史行情数据self.realtime_data_df : pd.DataFrame None #实时行情数据self.today_data_df : pd.DataFrame None #今日行情数据# 界面布局self.setWindowTitle(股票行情查看软件)self.combox QtWidgets.QComboBox(self)self.search_btn QtWidgets.QPushButton(同步股票清单, self)self.is_searching_stock_code Falseself.search_edit QtWidgets.QLineEdit(self)self.search_edit.setStyleSheet(QLineEdit { border: 1px solid #888888; })self.tab_widget QtWidgets.QTabWidget(self)self.history_page QtWidgets.QWidget(self)self.realtime_page QtWidgets.QWidget(self)self.tab_widget.addTab(self.history_page, 历史行情)self.tab_widget.addTab(self.realtime_page, 实时行情)self.layout QtWidgets.QVBoxLayout(self)# 头部查询股票代码布局self.header_layout QtWidgets.QHBoxLayout()self.header_layout.addSpacing(20)self.header_layout.addWidget(self.search_btn)self.header_layout.setStretchFactor(self.search_btn,1)self.header_layout.addSpacing(20)self.search_label QtWidgets.QLabel(请输入股票名称或代码)self.search_label.setAlignment(QtCore.Qt.AlignCenter)self.header_layout.addWidget(self.search_label)self.header_layout.setStretchFactor(self.search_label,0)self.header_layout.addSpacing(20)self.header_layout.addWidget(self.search_edit)self.header_layout.addSpacing(1)self.header_layout.addWidget(self.combox)self.header_layout.setStretchFactor(self.search_edit,2)self.header_layout.setStretchFactor(self.combox,3)self.search_edit.textChanged.connect(self.search_edit_cb)self.layout.addLayout(self.header_layout)self.layout.addWidget(self.tab_widget)self.text_label QtWidgets.QLabel(self)self.layout.addWidget(self.text_label)# 历史行情页面布局self.history_page_layout QtWidgets.QVBoxLayout(self.history_page)self.history_layout QtWidgets.QHBoxLayout()self.history_page_layout.addLayout(self.history_layout)self.edit_area QtWidgets.QTextEdit(self)self.history_page_layout.addWidget(self.edit_area)self.history_plot pg.PlotWidget()self.history_page_layout.addWidget(self.history_plot)self.history_page_layout.setStretchFactor(self.edit_area,1)self.history_page_layout.setStretchFactor(self.history_plot,2)self.history_btn QtWidgets.QPushButton(历史行情, self)self.date_edit_start QtWidgets.QDateEdit(self)self.date_edit_start.setCalendarPopup(True)self.date_edit_start.setDisplayFormat(yyyy-MM-dd)self.date_edit_start.setAlignment(QtCore.Qt.AlignCenter)self.date_edit_start.setDate(QtCore.QDate.currentDate().addYears(-3))self.date_edit_end QtWidgets.QDateEdit(self)self.date_edit_end.setCalendarPopup(True)self.date_edit_end.setDisplayFormat(yyyy-MM-dd)self.date_edit_end.setAlignment(QtCore.Qt.AlignCenter)self.date_edit_end.setDate(QtCore.QDate.currentDate())self.history_layout.addWidget(QtWidgets.QLabel(时间范围),1,QtCore.Qt.AlignLeft)self.history_layout.addWidget(self.date_edit_start,2)self.history_layout.addWidget(QtWidgets.QLabel( - ),0,QtCore.Qt.AlignCenter)self.history_layout.addWidget(self.date_edit_end,2)self.history_layout.addWidget(self.history_btn,1,QtCore.Qt.AlignRight)self.history_curve None # 历史行情图的曲线self.history_vertical_line None # 历史行情图的垂直线self.history_horizontal_line None #历史行情图的水平线self.is_searching_history_data False# 实时行情页面布局self.realtime_btn QtWidgets.QPushButton(实时行情, self)self.realtime_page_layout QtWidgets.QVBoxLayout(self.realtime_page)self.realtime_page_layout.addWidget(self.realtime_btn)self.realtime_plot pg.PlotWidget(self)self.realtime_page_layout.addWidget(self.realtime_plot)self.realtime_curve None # 实时行情图的曲线self.realtime_vertical_line None # 实时行情图的垂直线self.realtime_horizontal_line None #实时行情图的水平线self.is_searching_realtime_data False# 初始化数据worker Thread(targetself.init_data_thread_func)worker.start()# 信号连接my_signal.combox_update_signal.connect(self.combox_update_cb)my_signal.history_area_data_signal.connect(self.history_data_cb)my_signal.realtime_area_data_signal.connect(self.realtime_data_cb)my_signal.warning_signal.connect(self.warning_cb)self.history_plot.scene().sigMouseMoved.connect(self.history_plot_mouse_move_cb)self.realtime_plot.scene().sigMouseMoved.connect(self.realtime_plot_mouse_move_cb)self.history_btn.clicked.connect(self.history_btn_cb)self.realtime_btn.clicked.connect(self.realtime_btn_cb)self.search_btn.clicked.connect(self.search_btn_cb)self.tab_widget.tabBarClicked.connect(self.tab_widget_cb)# 定时器 不使用#self.realtime_timer QtCore.QTimer()#self.realtime_timer.timeout.connect(self.timer_timeout_cb)# 数据加载另外起个线程def init_data_thread_func(self):# 加载本地股票代号数据,数据为CSV格式,使用panda读取# 如果文件不存在,则跳过try:self.stock_code_df pd.read_csv(stock_symbol.csv,encodingutf-8,dtype{code:str,tradeStatus:str})# 启动初始化加载到comboxself.add_item_to_combox(self.stock_code_df) #这段代码是临时数据TODO 加载本地历史行情数据,数据为CSV格式,使用panda读取,该数据为测试数据#self.history_data_df pd.read_csv(temp_history_data.csv,encodingutf-8)#self.history_data_df[日期] pd.to_datetime(self.history_data_df[日期],format%Y-%m-%d)# 临时加载实时数据#self.realtime_data_df pd.read_csv(temp_realtime_data.csv,encodingutf-8)#self.realtime_data_df[时间] pd.to_datetime(self.realtime_data_df[时间],format%Y-%m-%d %H:%M:%S)except FileNotFoundError:print(股票代号数据文件不存在)passexcept Exception as e:print(其他错误 str(e))passdef add_item_to_combox(self, df : pd.DataFrame):self.combox.clear()temp None#加载df前20个数据到combox,如果不到20个则加载全部if df.shape[0] 20:temp df.head(20)else:temp dffor index, row in temp.iterrows():self.combox.addItem(row[code] ( row[name] ))my_signal.combox_update_signal.emit()def combox_update_cb(self):self.combox.setCurrentIndex(0)# 查询历史行情的btn回调def history_btn_cb(self):def history_thread_func():text self.combox.currentText()match re.search(r\d{6}, text)start_time_str self.date_edit_start.date().toString(yyyy-MM-dd)end_time_str self.date_edit_end.date().toString(yyyy-MM-dd)if match:code str(match.group())#翻译为证券宝格式temp self.stock_code_df[self.stock_code_df[code] code]if temp is None or temp.shape[0] 0:my_signal.warning_signal.emit(股票代码错误)self.is_searching_history_data Falsebs_code temp.iloc[0][bs_code]self.history_data_df StockData.get_history_data(codebs_code, start_datestart_time_str, end_dateend_time_str)if self.history_data_df is not None:my_signal.history_area_data_signal.emit()self.is_searching_history_data Falsereturnif self.is_searching_history_data:returnself.is_searching_history_data Trueworker Thread(targethistory_thread_func)worker.start()return# 历史行情图绘制def history_data_cb(self):self.edit_area.setText(self.history_data_df.to_string())history_data_df self.history_data_df.copy()#打印列名和类型#print(history_data_df.columns)history_data_df[avg] ((history_data_df[open] history_data_df[close])/2).round(2)# 行号的序号xdata history_data_df.index.astype(int).to_list()ydata history_data_df[avg].astype(float).to_list()self.history_plot.plotItem.setLabel(left, 均价)axis: pg.AxisItem self.history_plot.getPlotItem().getAxis(bottom)self.history_plot.plotItem.setLabel(bottom, 日期,units)# x轴刻度变为字符串,可以实现日期的显示 这里费了好多脑子# self.history_plot.getPlotItem().getAxis(bottom).setTicks([[(x, history_data_df.iloc[index][日期]) #for #index, x in enumerate(xdata)]])x_ticks_str [history_data_df.iloc[index][date] for index, x in enumerate(xdata)] x_ticks1 []x_ticks2 []x_ticks3 []gap (round(len(x_ticks_str)) // 8 1 ) # 0 到 7 是 1 8到15是 2# 设定 gap为 4 和 2 的倍数 gap 2 if gap 3 else gapif gap 4: # 4 8 12 16 20......gap (gap 3) // 4 * 4 x_ticks1 [(i,x_ticks_str[i])for i in range(0,len(x_ticks_str),gap)]if gap 2:x_ticks2 [(i,x_ticks_str[i])for i in range(0,len(x_ticks_str),gap // 2)]if gap 4 :x_ticks3 [(i,x_ticks_str[i])for i in range(0,len(x_ticks_str),gap // 4)]#去掉x_ticks2奇数个元素不去掉也行x_ticks2 x_ticks2[1::2]x_ticks3 x_ticks3[1::2]#x_ticks3 [(i,x_ticks_str[i])for i in range(0,len(x_ticks_str),gap // 4)]plot_ticks [x_ticks1,x_ticks2,x_ticks3]axis.setTicks(plot_ticks)#限制显示范围self.history_plot.plotItem.vb.setLimits(xMin xdata[0],xMax xdata[-1] *1.2 ,yMin min(ydata) -(max(ydata) - min(ydata)) * 0.2 , yMax max(ydata) (max(ydata) - min(ydata)) *0.2,minXRange10, maxXRange (xdata[-1] - xdata[0]) *1.2,minYRange 0.1, maxYRange 1.4*(max(ydata) - min(ydata)))#清除旧的绘制新的if self.history_curve is not None:self.history_plot.removeItem(self.history_curve)self.history_curve self.history_plot.plotItem.plot(xdata, ydata, penw)#历史行情图的鼠标移动事件def history_plot_mouse_move_cb(self,pos):if self.history_data_df is None:returnview_coords pg.Point(pos)mouse_point self.history_plot.getPlotItem().vb.mapSceneToView(view_coords)x round(mouse_point.x())#保留两位小数temp_df self.history_data_df.copy()temp_df[avg] ((temp_df[open] temp_df[close])/2).round(2)temp_df[temp_index] temp_df.index.astype(int)closest_min_idx (temp_df[temp_index] - x).abs().idxmin()y_value temp_df.iloc[closest_min_idx][avg]#如果历史行情图还没有绘制,则不绘制垂直线,水平线if self.history_curve is not None:self.history_plot.removeItem(self.history_vertical_line)self.history_plot.removeItem(self.history_horizontal_line)self.text_label.setText(价格 str(y_value.round(2)) 日期 temp_df.iloc[closest_min_idx][date])self.history_vertical_line pg.InfiniteLine(posclosest_min_idx, angle90, peny)self.history_horizontal_line pg.InfiniteLine(posy_value, angle0, peny)self.history_plot.addItem(self.history_horizontal_line)self.history_plot.addItem(self.history_vertical_line)#print(idx,y_value)# 查看实时行情图btn回调def realtime_btn_cb(self):def reset_():self.is_searching_realtime_data Falseself.realtime_btn.setEnabled(True)def realtime_thread_func():text self.combox.currentText()match re.search(r\d{6}, text)if match:today QtCore.QDate.currentDate()today_str today.toString(yyyy-MM-dd)code str(match.group())realtime_data_df StockData.get_realtime_data(codecode)#如果获取的价格数据为空,则不更新数据if realtime_data_df is None or realtime_data_df.empty:reset_()return# 如果获得价格数据为0则不更新数据if realtime_data_df[price].sum() 0:reset_()returnself.realtime_data_df realtime_data_df#my_signal.start_timer_signal.emit()my_signal.realtime_area_data_signal.emit()reset_()if self.is_searching_realtime_data:returnself.is_searching_realtime_data Trueself.realtime_btn.setEnabled(False)worker Thread(targetrealtime_thread_func)worker.start()return# 实时行情图绘制def realtime_data_cb(self):#清除旧的绘制新的if self.realtime_curve is not None:self.realtime_plot.removeItem(self.realtime_curve)realtime_data_df self.realtime_data_df.copy()# 行号的序号xdata realtime_data_df.index.astype(int).to_list()ydata realtime_data_df[price].astype(float).to_list()self.realtime_plot.plotItem.setLabel(left, 价格)axis: pg.AxisItem self.realtime_plot.getPlotItem().getAxis(bottom)self.realtime_plot.plotItem.setLabel(bottom, 时间,units)# x轴刻度变为字符串,固定显示9:30 10:30 14:00 15:00x_ticks_str [(0,9:30),(30,10:00),(60,10:30),(90,11:00),(120,11:30/13:00),(150,13:30),(180,14:00),(210,14:30),(240,15:00)]plot_ticks [x_ticks_str]axis.setTicks(plot_ticks)#限制显示范围self.realtime_plot.plotItem.vb.setLimits(xMin 0,xMax 250 ,yMin min(ydata) - 1 , yMax max(ydata) 1,minXRange250, maxXRange 250,minYRange 0.1, maxYRange 1.2*max(ydata))self.realtime_curve self.realtime_plot.plotItem.plot(xdata, ydata, penw)returndef realtime_plot_mouse_move_cb(self,pos):if self.realtime_data_df is None:return#清除旧线self.realtime_plot.removeItem(self.realtime_vertical_line)self.realtime_plot.removeItem(self.realtime_horizontal_line)closest_min_idx Noneview_coords pg.Point(pos)mouse_point self.realtime_plot.getPlotItem().vb.mapSceneToView(view_coords)x round(mouse_point.x())#保留两位小数temp_df self.realtime_data_df.copy()temp_df[序号] temp_df.index.astype(int)if x 0 or x temp_df.iloc[-1][序号] or x temp_df.iloc[0][序号]:return # 查找可以划线的x坐标closest_min_idx (temp_df[序号] - x).abs().idxmin()#如果实时行情图还没有绘制,则不绘制垂直线,水平线if self.realtime_curve is not None and closest_min_idx is not None:y_value temp_df.iloc[closest_min_idx][price]self.text_label.setText(价格 str(y_value.round(2)) 时间 temp_df.iloc[closest_min_idx][time].strftime(%H:%M:%S))self.realtime_vertical_line pg.InfiniteLine(posclosest_min_idx, angle90, peny)self.realtime_horizontal_line pg.InfiniteLine(posy_value, angle0, peny)self.realtime_plot.addItem(self.realtime_horizontal_line)self.realtime_plot.addItem(self.realtime_vertical_line)def search_edit_cb(self):text self.search_edit.text()if text :self.add_item_to_combox(self.stock_code_df)returndf self.stock_code_df[self.stock_code_df[name].str.contains(text) | self.stock_code_df[code].str.contains(text)]self.add_item_to_combox(df)return# 查询所有股票代号数据的回调def search_btn_cb(self):# QtWidgets.QApplication.setOverrideCursor(QtCore.Qt.WaitCursor)def search_thread_func():self.is_searching_stock_code Truestock_code_df StockData.get_all_stock_code()#print(stock_code_df)if stock_code_df is None:print(股票数据获取失败)if stock_code_df.equals(self.stock_code_df):print(股票数据无更新)else:self.stock_code_df stock_code_dfself.stock_code_df.to_csv(stock_symbol.csv,indexFalse,encodingutf-8)print(股票数据更新成功)self.search_btn.setEnabled(True)self.is_searching_stock_code Falseif self.is_searching_stock_code:returnself.is_searching_stock_code Trueself.search_btn.setEnabled(False)#self.search_btn.setEnabled(False)worker Thread(targetsearch_thread_func)worker.start()def warning_cb(self,msg):QtWidgets.QMessageBox.warning(self, 警告, msg)# 切换tab页时清除text_labeldef tab_widget_cb(self,index):self.text_label.setText()#def start_timer_cb(self):# self.realtime_timer.start(1000*60 * 5) #5分钟更新一次数据#def stop_timer_cb(self):# self.realtime_timer.stop()#def timer_timeout_cb(self):#print(定时器触发 str(QtCore.QDateTime.currentDateTime().toString(HH:mm:ss)))#self.realtime_data_cb()if __name__ __main__:app QtWidgets.QApplication()window MainWindow()window.show()app.exec()
文章转载自:
http://www.morning.knnc.cn.gov.cn.knnc.cn
http://www.morning.tfgkq.cn.gov.cn.tfgkq.cn
http://www.morning.dndk.cn.gov.cn.dndk.cn
http://www.morning.rnqyy.cn.gov.cn.rnqyy.cn
http://www.morning.mwqbp.cn.gov.cn.mwqbp.cn
http://www.morning.cpmfp.cn.gov.cn.cpmfp.cn
http://www.morning.xkjqg.cn.gov.cn.xkjqg.cn
http://www.morning.yfstt.cn.gov.cn.yfstt.cn
http://www.morning.yfffg.cn.gov.cn.yfffg.cn
http://www.morning.zwwhq.cn.gov.cn.zwwhq.cn
http://www.morning.rpljf.cn.gov.cn.rpljf.cn
http://www.morning.zydr.cn.gov.cn.zydr.cn
http://www.morning.grzpc.cn.gov.cn.grzpc.cn
http://www.morning.zlhcw.cn.gov.cn.zlhcw.cn
http://www.morning.sqqhd.cn.gov.cn.sqqhd.cn
http://www.morning.crqbt.cn.gov.cn.crqbt.cn
http://www.morning.pwksz.cn.gov.cn.pwksz.cn
http://www.morning.rqhbt.cn.gov.cn.rqhbt.cn
http://www.morning.fnfhs.cn.gov.cn.fnfhs.cn
http://www.morning.rynq.cn.gov.cn.rynq.cn
http://www.morning.ktxd.cn.gov.cn.ktxd.cn
http://www.morning.tkchm.cn.gov.cn.tkchm.cn
http://www.morning.mzpd.cn.gov.cn.mzpd.cn
http://www.morning.jxjrm.cn.gov.cn.jxjrm.cn
http://www.morning.mqtzd.cn.gov.cn.mqtzd.cn
http://www.morning.ggmls.cn.gov.cn.ggmls.cn
http://www.morning.rflcy.cn.gov.cn.rflcy.cn
http://www.morning.rfhwc.cn.gov.cn.rfhwc.cn
http://www.morning.dkbgg.cn.gov.cn.dkbgg.cn
http://www.morning.ndcf.cn.gov.cn.ndcf.cn
http://www.morning.ktfnj.cn.gov.cn.ktfnj.cn
http://www.morning.knlbg.cn.gov.cn.knlbg.cn
http://www.morning.ngcw.cn.gov.cn.ngcw.cn
http://www.morning.bxqry.cn.gov.cn.bxqry.cn
http://www.morning.pwbps.cn.gov.cn.pwbps.cn
http://www.morning.gcbhh.cn.gov.cn.gcbhh.cn
http://www.morning.clxpp.cn.gov.cn.clxpp.cn
http://www.morning.dnpft.cn.gov.cn.dnpft.cn
http://www.morning.cjmmt.cn.gov.cn.cjmmt.cn
http://www.morning.wnjrf.cn.gov.cn.wnjrf.cn
http://www.morning.hengqilan.cn.gov.cn.hengqilan.cn
http://www.morning.yggwn.cn.gov.cn.yggwn.cn
http://www.morning.sxwfx.cn.gov.cn.sxwfx.cn
http://www.morning.dplmq.cn.gov.cn.dplmq.cn
http://www.morning.pltbd.cn.gov.cn.pltbd.cn
http://www.morning.ytrbq.cn.gov.cn.ytrbq.cn
http://www.morning.kntsd.cn.gov.cn.kntsd.cn
http://www.morning.rdzgm.cn.gov.cn.rdzgm.cn
http://www.morning.shnqh.cn.gov.cn.shnqh.cn
http://www.morning.pigcamp.com.gov.cn.pigcamp.com
http://www.morning.smjyk.cn.gov.cn.smjyk.cn
http://www.morning.jzsgn.cn.gov.cn.jzsgn.cn
http://www.morning.wrdpj.cn.gov.cn.wrdpj.cn
http://www.morning.nrmyj.cn.gov.cn.nrmyj.cn
http://www.morning.cwkcq.cn.gov.cn.cwkcq.cn
http://www.morning.xbxks.cn.gov.cn.xbxks.cn
http://www.morning.tfpqd.cn.gov.cn.tfpqd.cn
http://www.morning.dndjx.cn.gov.cn.dndjx.cn
http://www.morning.llthz.cn.gov.cn.llthz.cn
http://www.morning.xhhqd.cn.gov.cn.xhhqd.cn
http://www.morning.wctqc.cn.gov.cn.wctqc.cn
http://www.morning.cqyhdy.cn.gov.cn.cqyhdy.cn
http://www.morning.rynrn.cn.gov.cn.rynrn.cn
http://www.morning.hptbp.cn.gov.cn.hptbp.cn
http://www.morning.lxdbn.cn.gov.cn.lxdbn.cn
http://www.morning.cwzzr.cn.gov.cn.cwzzr.cn
http://www.morning.zxqqx.cn.gov.cn.zxqqx.cn
http://www.morning.ynryz.cn.gov.cn.ynryz.cn
http://www.morning.cytr.cn.gov.cn.cytr.cn
http://www.morning.ssglh.cn.gov.cn.ssglh.cn
http://www.morning.zxwqt.cn.gov.cn.zxwqt.cn
http://www.morning.brkc.cn.gov.cn.brkc.cn
http://www.morning.tytly.cn.gov.cn.tytly.cn
http://www.morning.ktdqu.cn.gov.cn.ktdqu.cn
http://www.morning.fbfnk.cn.gov.cn.fbfnk.cn
http://www.morning.tkcz.cn.gov.cn.tkcz.cn
http://www.morning.dmcxh.cn.gov.cn.dmcxh.cn
http://www.morning.dnqpq.cn.gov.cn.dnqpq.cn
http://www.morning.tfrlj.cn.gov.cn.tfrlj.cn
http://www.morning.mnwmj.cn.gov.cn.mnwmj.cn
http://www.tj-hxxt.cn/news/277062.html

相关文章:

  • 网站建设项目的预算网站开发语言为
  • 常州哪些网站公司做的好丽江网站建设c3sales
  • 邯郸住房和城乡建设局网站建设网站证书不受信任
  • 什么网站可以做TCGA病理分期小程序开发一年多少钱
  • 宁波网站建设与推广方案wordpress大
  • 怎样进网站空间服务器wordpress 媒体路径
  • 网站如何实现微信登录界面中山网站设计公司
  • 没有公司做网站可以吗高端制造
  • 郴州58网站杨浦专业做网站
  • 汕头网站设计定制WordPress海报
  • 直播网站建设需要什么品牌营销咨询公司
  • 济南电子商务网站建设怎么安装百度
  • 网站建设的利益生成图片
  • 企业网站推广优化公司大型网站开发pdf
  • 营销网站制作全包网站建设招标提问
  • 做展馆好的设计网站什么网站做的比较好
  • php框架做网站的好处重庆制作网站怎么选
  • 网站建设策划结构网络营销有哪些功能?
  • 做网站要给ftp密码吗如何提高网站的点击量
  • 创建网站大约design工业设计
  • 做类似淘宝的网站前景网站推广的优点
  • 菠菜网站建设条件简述网站制作过程
  • 西部数码网站管理助手 mssql企业单位网站建设内容需要什么
  • 如何做优酷网站赚钱做同行的旅游网站
  • 电子商务网站开发费用线下推广的好处
  • 做网站后台维护的岗位叫什么优秀网站ui设计
  • php网站如何上传数据库河北邯郸封闭最新消息
  • 一级a做网站免费wordpress 微信客户端
  • 昆明网站建设公司推荐重庆h5网站建设模板
  • 源码制作网站如何免费开自己的网站