Python中怎么定时执行网站爬虫
发表于:2025-01-27 作者:千家信息网编辑
千家信息网最后更新 2025年01月27日,Python中怎么定时执行网站爬虫,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。编写爬虫代码编写一个爬虫程序,使用requests与
千家信息网最后更新 2025年01月27日Python中怎么定时执行网站爬虫
Python中怎么定时执行网站爬虫,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
编写爬虫代码
编写一个爬虫程序,使用requests
与beautifulsoup4
包爬取和解析Yahoo!股市-上市成交价排行与Yahoo!股市-上柜成交价排行的资料,再利用pandas
包将解析后的展示出来。
import datetime
import requests
from bs4 import BeautifulSoup
import pandas as pd
def get_price_ranks():
current_dt = datetime.datetime.now().strftime("%Y-%m-%d %X")
current_dts = [current_dt for _ in range(200)]
stock_types = ["tse", "otc"]
price_rank_urls = ["https://tw.stock.yahoo.com/d/i/rank.php?t=pri&e={}&n=100".format(st) for st in stock_types]
tickers = []
stocks = []
prices = []
volumes = []
mkt_values = []
ttl_steps = 10*100
each_step = 10
for pr_url in price_rank_urls:
r = requests.get(pr_url)
soup = BeautifulSoup(r.text, 'html.parser')
ticker = [i.text.split()[0] for i in soup.select(".name a")]
tickers += ticker
stock = [i.text.split()[1] for i in soup.select(".name a")]
stocks += stock
price = [float(soup.find_all("td")[2].find_all("td")[i].text) for i in range(5, 5+ttl_steps, each_step)]
prices += price
volume = [int(soup.find_all("td")[2].find_all("td")[i].text.replace(",", "")) for i in range(11, 11+ttl_steps, each_step)]
volumes += volume
mkt_value = [float(soup.find_all("td")[2].find_all("td")[i].text)*100000000 for i in range(12, 12+ttl_steps, each_step)]
mkt_values += mkt_value
types = ["上市" for _ in range(100)] + ["上柜" for _ in range(100)]
ky_registered = [True if "KY" in st else False for st in stocks]
df = pd.DataFrame()
df["scrapingTime"] = current_dts
df["type"] = types
df["kyRegistered"] = ky_registered
df["ticker"] = tickers
df["stock"] = stocks
df["price"] = prices
df["volume"] = volumes
df["mktValue"] = mkt_values
return df
price_ranks = get_price_ranks()
print(price_ranks.shape)
这个的结果展示为
## (200, 8)
接下来我们利用pandas进行前几行展示
price_ranks.head()
price_ranks.tail()
接下来我们就开始往服务器上部署
对于服务器的选择,环境配置不在本课的讨论范围之内,我们主要是要讲一下怎么去设置定时任务。
接下来我们改造一下代码,改造成结果有sqlite存储。
import datetime
import requests
from bs4 import BeautifulSoup
import pandas as pd
import sqlite3
def get_price_ranks():
current_dt = datetime.datetime.now().strftime("%Y-%m-%d %X")
current_dts = [current_dt for _ in range(200)]
stock_types = ["tse", "otc"]
price_rank_urls = ["https://tw.stock.yahoo.com/d/i/rank.php?t=pri&e={}&n=100".format(st) for st in stock_types]
tickers = []
stocks = []
prices = []
volumes = []
mkt_values = []
ttl_steps = 10*100
each_step = 10
for pr_url in price_rank_urls:
r = requests.get(pr_url)
soup = BeautifulSoup(r.text, 'html.parser')
ticker = [i.text.split()[0] for i in soup.select(".name a")]
tickers += ticker
stock = [i.text.split()[1] for i in soup.select(".name a")]
stocks += stock
price = [float(soup.find_all("td")[2].find_all("td")[i].text) for i in range(5, 5+ttl_steps, each_step)]
prices += price
volume = [int(soup.find_all("td")[2].find_all("td")[i].text.replace(",", "")) for i in range(11, 11+ttl_steps, each_step)]
volumes += volume
mkt_value = [float(soup.find_all("td")[2].find_all("td")[i].text)*100000000 for i in range(12, 12+ttl_steps, each_step)]
mkt_values += mkt_value
types = ["上市" for _ in range(100)] + ["上櫃" for _ in range(100)]
ky_registered = [True if "KY" in st else False for st in stocks]
df = pd.DataFrame()
df["scrapingTime"] = current_dts
df["type"] = types
df["kyRegistered"] = ky_registered
df["ticker"] = tickers
df["stock"] = stocks
df["price"] = prices
df["volume"] = volumes
df["mktValue"] = mkt_values
return df
price_ranks = get_price_ranks()
conn = sqlite3.connect('/home/ubuntu/yahoo_stock.db')
price_ranks.to_sql("price_ranks", conn, if_exists="append", index=False)
接下来如果我们让他定时启动,那么,我们需要linux的crontab命令:
如果我们要设置每天的 9:30 到 16:30 之间每小时都执行一次
那么我们只需要先把文件命名为price_rank_scraper.py
关于Python中怎么定时执行网站爬虫问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
爬虫
接下来
问题
网站
代码
成交价
更多
服务器
结果
股市
帮助
改造
服务
解答
易行
简单易行
之间
任务
内容
命令
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
设计数据库并创建相关数据
换dns服务器
软件开发电脑
汉阴市网络安全教育
校园网络安全班会总结
湖州app软件开发多少钱
tbc 70数据库
东营服务器运维管理系统设备
济南灵均互联网科技
跃动生活网络技术
ml320服务器
国泰君安海外投资数据库
数据库怎么查某个站点最新数据
我的世界服务器管理员招收
青少年网络安全法则
人民网络安全手抄报图片
deepin系统做软件开发
强电管理服务器
期货软件开发速找_牛顿科技
做网络技术如何做
云服务器不能用电信吗
软件开发电脑
软件开发专业的毕业设计
警惕网络安全共创网络文明心得
查询数据库的表语句
青岛城阳区的软件开发公司
有案底可以做软件开发
开个软件开发公司需要多少钱
金仓数据库linux
广州飞扬互联网科技有限公司