python - 抓取新网页内容的最快方法
问题描述
对于具有新闻文章列表的给定网页,我想尽快抓取新发布文章的内容,因为时间对于这项任务至关重要。
到目前为止,我使用requests
和BeautifulSoup
库从新闻网页中抓取内容。这使得在大约一到两秒内抓取一篇新的新闻文章成为可能。在论坛中,我经常发现做一个网页请求只需要一定的时间,这是一个无法改善的瓶颈。但也许有人有一个好主意......
我如何抓取新新闻文章的通用示例代码如下所示:
page = requests.get(webpage)
old_content = BeautifulSoup(page.content, "html.parser") # The latest article was scraped to have a comparison variable
while new_content == content:
page = requests.get(webpage)
new_content = BeautifulSoup(page.content, "html.parser")
# Code that uses new_content, if new_content =! old_content
有谁知道如何更快地抓取新的网页内容?理想情况下,这将花费不到一秒钟的时间。
解决方案
你说你在寻找新发表的文章,我认为没有媒体网站每分钟发布一篇文章。因此,您可以缓存结果并可能每隔一小时更新一次。
因此,假设您在客户端-服务器请求的运行时抓取该内容,将会有一个请求每隔一小时需要 1-2 秒,否则,您将从缓存中获取数据。
如果您在后台使用计划的作业,或者每 1 小时运行一次脚本并将结果存储在数据库中或您可以如此快速地从中获取数据的东西中,则可以使其更加优化。
推荐阅读
- d3.js - D3.js - 有向无环图:如何重新排列节点和边以避免边相交
- scala - 如何将 dynamo db 表中的数据读入数据框?
- jmeter - 有没有办法在 Jmeter 的 HTTP POST 请求的正文中上传图像文件?
- wordpress - 我应该使用 WordPress 作为移动应用程序的后端吗
- arrays - 如何在反应中的对象中渲染数组内的对象?
- angular - ionic 4 AngularFireAuthGuard 问题 - 不像 github 上描述的那样工作
- powershell - 静态的 PowerShell 对象
- c# - 按位运算符的通用约束
- java - 如何与杰克逊一起使用两种 json 格式
- ruby-on-rails - `rails spec` 做了什么而 `rspec` 没有?