showStockDate({“info”:{“000001”:{“name”:“\u5e73\u5b89\u94f6\u884c”}},“data”:{“000001”:{“10”:“16.13”,“8”:“16.14”,“9”:“15.87”,“13”:“78795234.00”,“19”:“1262802470.00”,“7”:“16.12”,“15”:“40225508.00”,“14”:“37528826.00”,“69”:“17.73”,“70”:“14.51”,“12”:“5”,“17”:“945400.00”,“264648”:“0.010”,“199112”:“0.062”,“1968584”:“0.406”,“2034120”:“9.939”,“1378761”:“16.026”,“526792”:“1.675”,“395720”:“-948073.000”,“461256”:“-39.763”,“3475914”:“313014790000.000”,“1771976”:“1.100”,“6”:“16.12”,“11”:“”}}})
很明显,这个结果并不是标准的 json 数据,但这个是 JSONP 返回的标准格式的数据,这里我们先处理下头尾,将它变成一个标准的 json 数据,再对照这页面的数据进行解析,最后将分析好的值写入数据库中。
def getStockInfo(list, stockInfoURL):
count = 0
for stock in list:
try:
url = stockInfoURL + stock
r = requests.get(url, headers=headers)
将获取到的数据封装进字典
dict1 = json.loads(r.text[14: int(len(r.text)) - 1])
print(dict1)
获取字典中的数据构建写入数据模版
insert_data = {
“code”: stock,
“name”: dict1[‘info’][stock][‘name’],
“jinkai”: dict1[‘data’][stock][‘7’],
“chengjiaoliang”: dict1[‘data’][stock][‘13’],
“zhenfu”: dict1[‘data’][stock][‘526792’],
“zuigao”: dict1[‘data’][stock][‘8’],
“chengjiaoe”: dict1[‘data’][stock][‘19’],
“huanshou”: dict1[‘data’][stock][‘1968584’],
“zuidi”: dict1[‘data’][stock][‘9’],
“zuoshou”: dict1[‘data’][stock][‘6’],
“liutongshizhi”: dict1[‘data’][stock][‘3475914’]
}
cursor.execute(sql_insert, insert_data)
conn.commit()
print(stock, ‘:写入完成’)
except:
print(‘写入异常’)
遇到错误继续循环
continue
这里我们加入异常处理,因为本次爬取的数据有些多,很有可能由于某些原因抛出异常,我们当然不希望有异常的时候中断数据抓取,所以这里添加异常处理继续抓取数据。
我们将代码稍作封装,完成本次的实战。
import requests
import re
import json
from pyquery import PyQuery
import pymysql
数据库连接
def connect():
conn = pymysql.connect(host=‘localhost’,
port=3306,
user=‘root’,
password=‘password’,
database=‘test’,
charset=‘utf8mb4’)
获取操作游标
cursor = conn.cursor()
return {“conn”: conn, “cursor”: cursor}
connection = connect()
conn, cursor = connection[‘conn’], connection[‘cursor’]
sql_insert = “insert into stock(code, name, jinkai, chengjiaoliang, zhenfu, zuigao, chengjiaoe, huanshou, zuidi, zuoshou, liutongshizhi, create_date) values (%(code)s, %(name)s, %(jinkai)s, %(chengjiaoliang)s, %(zhenfu)s, %(zuigao)s, %(chengjiaoe)s, %(huanshou)s, %(zuidi)s, %(zuoshou)s, %(liutongshizhi)s, now())”
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36’
}
def get_stock_list(stockListURL):
r =requests.get(stockListURL, headers = headers)
doc = PyQuery(r.text)
list = []
获取所有 section 中 a 节点,并进行迭代
for i in doc(‘.stockTable a’).items():
try:
href = i.attr.href
list.append(re.findall(r"\d{6}", href)[0])
except:
continue
list = [item.lower() for item in list] # 将爬取信息转换小写
return list
def getStockInfo(list, stockInfoURL):
count = 0
for stock in list:
try:
url = stockInfoURL + stock
r = requests.get(url, headers=headers)
将获取到的数据封装进字典
dict1 = json.loads(r.text[14: int(len(r.text)) - 1])
print(dict1)
获取字典中的数据构建写入数据模版
insert_data = {
“code”: stock,
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V:vip1024c 备注Python获取(资料价值较高,非无偿)
也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V:vip1024c 备注Python获取(资料价值较高,非无偿)
[外链图片转存中…(img-QjKXgRVv-1711583298836)]