爬虫获取页面链接,求问如何判断是最新的链接?
小弟想做一个自动转发网站新闻的微博机器人作为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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你是在爬取直播吧吧
可以设置一个变量lasttime记录上次爬取的时间
其实这个问题很普遍,就是判重。首先需要给每条新闻加一个唯一的标志, 比如说时间戳,或者在直播吧里面的连接方式:"http://news.zhibo8.cc/zuqiu/2016-10-18/5805df3d3422f", 你就可以取:
作为新闻的唯一ID,或者更加严格的,加上足球的标志,比如为0:
有了唯一ID, 就好办多了,方式很多,比如说,在内存中,维护一个列表, 里面按顺序存放当前页面的新闻的id,然后下次再爬取页面,那么页面上的新的新闻就是当前列表中第一个id之后的新闻。 然后再更新列表。可以把旧新闻从列表里面删除,比如新加入了n个新闻,那么就把最后n个新闻删除掉。无论空间还是时间,都蛮不错的。
还有想保存新闻的话, 那就每次把删除的新闻存到数据库。
新闻网页不都有时间字段么?
你的目的是想提取最新的新闻并且其中要包含你设置的关键字吧!!其实最简单你可以设置time.sleep(60),一分钟后再重新抓取网页数据,不就可以得到最新的新闻了吗?还有你的问题信息量太少,