爬虫获取页面链接,求问如何判断是最新的链接?

发布于 2022-09-04 00:53:05 字数 378 浏览 28 评论 0

小弟想做一个自动转发网站新闻的微博机器人作为python练手项目。
我知道需要api对接、需要爬取网站的新闻链接和标题。
但是如何只提取最新的新闻呢?
以下是按照我的要求过滤后,输出所有新闻的代码:

bar = soup.find_all('li', attrs={'data-label': True})
news = len(bar)
for i in range(news):
    if u'巴塞罗那' in bar[i]['data-label'].split(','):
        print bar[i]

我想提取过滤后列表里的第一条:print bar .
但提取后会反复显示len(bar)次,而且跳过过滤规则,请问如何解决?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

空心空情空意 2022-09-11 00:53:05

你是在爬取直播吧吧

可以设置一个变量lasttime记录上次爬取的时间

from datetime import datetime

#type datetime
lasttime

bar = soup.find_all('li', attrs={'data-label': True})
news = len(bar)
for i in range(news):
    d = datetime.strptime(bar[i].text[-19:], "%Y-%m-%d %H:%M:%S")
    if u'巴塞罗那' in bar[i]['data-label'].split(',') and d > lasttime:
        print bar[i]
夏花。依旧 2022-09-11 00:53:05

其实这个问题很普遍,就是判重。首先需要给每条新闻加一个唯一的标志, 比如说时间戳,或者在直播吧里面的连接方式:"http://news.zhibo8.cc/zuqiu/2016-10-18/5805df3d3422f", 你就可以取:

20161018-5805df3d3422f

作为新闻的唯一ID,或者更加严格的,加上足球的标志,比如为0:

0-20161018-5805df3d3422f

有了唯一ID, 就好办多了,方式很多,比如说,在内存中,维护一个列表, 里面按顺序存放当前页面的新闻的id,然后下次再爬取页面,那么页面上的新的新闻就是当前列表中第一个id之后的新闻。 然后再更新列表。可以把旧新闻从列表里面删除,比如新加入了n个新闻,那么就把最后n个新闻删除掉。无论空间还是时间,都蛮不错的。
还有想保存新闻的话, 那就每次把删除的新闻存到数据库。

冬天的雪花 2022-09-11 00:53:05

新闻网页不都有时间字段么?

音盲 2022-09-11 00:53:05

你的目的是想提取最新的新闻并且其中要包含你设置的关键字吧!!其实最简单你可以设置time.sleep(60),一分钟后再重新抓取网页数据,不就可以得到最新的新闻了吗?还有你的问题信息量太少,

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文