python-3.x - 如何在给定外部网站条件的情况下自动更新熊猫数据框?
问题描述
这是目标网站:https ://www.mobihealthnews.com/news?page=0
我创建了一个 python 函数来从新闻页面中抓取所有信息并将所有内容存储在 pandas 数据框中,如下所示:
def scrape_global_news(url):
soup = BeautifulSoup(requests.get(url).content, 'html.parser')
frame=[]
filename="global_mobi_health_news.xlxs"
f=open(filename,"w", encoding = 'utf-8')
for row in soup.select('.group-left .views-row'):
Region = "Global"
Title = row.select_one('.views-field-title').get_text(strip=True)
Content = row.select_one('.views-field-body').get_text(strip=True)
Link = 'https://www.mobihealthnews.com' + row.a['href']
Date = row.select_one('.day_list').get_text(strip=True)
Author = row.select_one('.author_list').get_text(strip=True)
frame.append((Region,Title,Content,Date,Link,Author))
f.write(Title.replace(",","^")+","+Link+","+Author.replace(",","^")+","+Content.replace(",","^")+","+Date.replace(",","^")+"\n")
f.close()
df_global=pd.DataFrame(frame, columns=['Region','Title','Summarized Content','Creation Date','Source','Author Name'])
return df_global
scrape_global_news('https://www.mobihealthnews.com/news?page=0')
在下图中,有最终结果:
现在,我遇到了两个主要问题:
添加并实现一项功能以检查上面的网页内是否有新文章(即
df_global.Title[0] =! Title ]
,如果此条件为真,则scrape_global_news
在第一个数据框的行中添加具有该功能的新文章。使此脚本每 24 小时自动运行一次,并将其部署在云服务提供商 (?) 中。关于这一点,我不太确定是否需要适当的云服务。
感谢您的时间。
编辑:为了更好地解释 #1 问题:
当我昨天(07/21/2020)发布问题时,第一行是上面链接的网站中的最新文章(即最新文章)。如果您今天查看网站,顶部还有 4 篇品牌新闻文章(这个数字很可能每天都在增加)。我想从网站内的 4 篇新文章中获取信息(使用“scrape_global_news”功能)并将它们存储在数据框的顶部。最终的范围是从最近的文章到最近的文章排序
解决方案
您能否详细说明问题#1?
对于问题 2。您可以在基于 Linux 的 VPS 上运行它并使用 cronjobs 进行调度,或者您可以使用 AWS Lambda 函数,如果您将结果保存在外部数据库中。