我刚刚开始尝试解析并决定制作一个发送文章列表的机器人。
我在这里收集了标题和最近文章的链接:
from LxmlSoup import LxmlSoup
import requests
html = requests.get('https://habr.com/ru/articles/').text
soup = LxmlSoup(html)
links = soup.find_all('a', class_='tm-title__link')
for i, link in enumerate(links, start=1):
print(f'{i}: {link.text()}')
print('https://habr.com' + link.get('href'), '\n')
现在的问题是:
- 如何将解析限制为 3-5 个结果?这样他就不会收集整个页面,而只会收集新的 3-5 篇文章(它们是在 hub 上订购的)。
- 如何获取一篇文章的发表时间? Hub上的标题旁边写着“55分钟前”,我想记录一个特定的时间(收集统计数据,例如“周四,发表文章的平均时间为40分钟”)
- 在哪里以及从哪里阅读有关 html 的内容 - 我很难理解要查找哪些标签以及如何从中获取信息。
如果有的话,这些任务本质上纯粹是教育性的。
第一个问题:
输出:
第二、第三个问题:
LxmlSoup
,不像它的祖先 BeautifulSoup。所以你应该去:limit
find_all()
bs4
或者使用 解析所有文章
LxmlSoup
,然后只显示前五个链接(如果不需要额外的文章存储在列表中,可以使用截图):<time>
及其相应属性放在标签中:datetime
您可以通过、 或属性从那里提取日期title
,具体取决于您更容易使用哪种格式: