文章目录
专栏导读 背景 前期准备
请求url、请求方法、请求参数 测试一个 完整代码+写入Excel 视频展示 不足: 结尾
专栏导读
🔥🔥本文已收录于《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' ] } " )
输出
报价:大蒜报价
日期: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" )
视频展示
不足:
这里的编号还是有点问题,大家可以课后自行在认真探索一番!
结尾
希望对大家有帮助
我最近在努力学习爬虫,大家共同进步!!
都看到这了,关注+点赞+收藏=不迷路!!
希望大家多多订阅,多多关注点赞