专栏导读
🔥🔥本文已收录于《Python基础篇爬虫》
🉑🉑本专栏专门针对于有爬虫基础准备的一套基础教学,轻松掌握Python爬虫,欢迎各位同学订阅,专栏订阅地址:点我直达
🤞🤞此外如果您已工作,如需利用Python解决办公中常见的问题,欢迎订阅《Python办公自动化》专栏,订阅地址:点我直达
的
🔺🔺此外《Python30天从入门到熟练》专栏已上线,欢迎大家订阅,订阅地址:点我直达
背景
-
由于我是一个蔬菜个体户,那么我想每天查询一下每日蔬菜的价格趋势相关信息,我们可以通过Python爬虫进而获取每日的蔬菜价格信息
PS:这是我们的第七节课,之前的课,欢迎大家查阅啊

前期准备
1、网址:
2、分析:
-
我们发现蔬菜的第一个是【大蒜报价】
-
最后一个是【空心菜报价】


右击检查网页发现每一种蔬菜都有一个编号,如【大蒜】的编号是【JO_111924】
以此类推 [生姜】的编号是【JO_111925】
以此类推 [土豆】的编号是【JO_111926】
。。。。
最后一个 [空心菜】的编号是【JO_120097】

请求url、请求方法、请求参数
-
🚩请求URL :https://api.jijinhao.com/history/quotejs.htm?codes=JO_120097&pageSize=7&style=3&_=1700121561588
-
修改后:https://api.jijinhao.com/history/quotejs.htm?codes=JO_{蔬菜编号}&pageSize=7&style=3&_=1700121561588
-
🚩请求方法:get()
-
经测试,headers,记得加上【User-Agent】、【Host】、【Referer】
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
'Host': 'api.jijinhao.com',
'Referer': 'https://jiage.cngold.org/shucai/',
}
params = {
'codes': 'J蔬菜编号',
'pageSize': 7,
'style': 3,
'_': int(time.time())
}
测试一个
-
我们发现,【quote】中的
【q67】是商品名称
【q63】是今日价格
【q70】是与昨日差价
【q59】是今日日期

由于这里的返回的json字符串,不太好直接用json.loads(),加载成字典,我们可以将【var quot_str 】中的var去除(replace替换掉),再利用【exec()】将【quot_str】直接变为一个python变量
🚩重要知识点:使用上面【exec()】方法,quot_str这个变量会报错,不过没关系,依旧可以运行!!
🚩重要知识点:使用上面【exec()】方法,quot_str这个变量会报错,不过没关系,依旧可以运行!!
🚩重要知识点:使用上面【exec()】方法,quot_str这个变量会报错,不过没关系,依旧可以运行!!
代码
import time
import requests
url = 'http://api.jijinhao.com/history/quotejs.htm?'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
'Host': 'api.jijinhao.com',
'Referer': 'https://jiage.cngold.org/shucai/',
}
params = {
'codes': 'JO_111924',
'pageSize': '7',
'style': '3',
'_': str(int(time.time()))
}
res_data = requests.get(url=url,headers=headers,params=params)
res_dict = exec(res_data.text.replace("var",'').strip())
res = quot_str[0]['data'][0]['quote']
print(f"报价:{res['q67']}\n日期:{res['q59']}——价格:{res['q63']}\n较昨日:{res['q70']}")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
输出
报价:大蒜报价
日期:2023-11-16 00:00:00——价格:10.3100
较昨日:0.0200
完整代码+写入Excel
-
那么我们利用for 循环 将【大蒜】的编号是【JO_111924】到 [空心菜】的编号是【JO_120097】直接循环出来:
-
❌这里的编号还是有点问题,不过基本上已经可以跑出来了!
'''
@Project :测试
@File :main.py
@IDE :PyCharm
@Author :一晌小贪欢
@Date :2023/11/16 16:01
'''
import time
import openpyxl
import requests
wb = openpyxl.Workbook()
ws = wb.active
ws.append(["报价",'日期','价格','较昨日'])
url = 'http://api.jijinhao.com/history/quotejs.htm?'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
'Host': 'api.jijinhao.com',
'Referer': 'https://jiage.cngold.org/shucai/',
}
for i in range(111924,111974):
params = {
'codes': f'JO_{i}',
'pageSize': '7',
'style': '3',
'_': str(int(time.time()))
}
res_data = requests.get(url=url,headers=headers,params=params)
res_dict = exec(res_data.text.replace("var",'').strip())
try:
res = quot_str[0]['data'][0]['quote']
except:
pass
print(f"报价:{res['q67']}\n日期:{res['q59']}——价格:{res['q63']}\n较昨日:{res['q70']}")
ws.append([res['q67'],res['q59'],res['q63'],res['q70']])
wb.save("./结果.xlsx")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
视频展示

不足:
-
这里的编号还是有点问题,大家可以课后自行在认真探索一番!
结尾
希望对大家有帮助
我最近在努力学习爬虫,大家共同进步!!
都看到这了,关注+点赞+收藏=不迷路!!
希望大家多多订阅,多多关注点赞