是否能够从VKAPI获取文章?

2024-07-07 07:27:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从VK集团获得文章。但我找不到任何可能从VKAPI获得它们。也许有人也面临同样的问题?是否有机会使用get for Post获取文章?(我正在使用vk_api python包)


Tags: apiforget文章post集团机会vk
1条回答
网友
1楼 · 发布于 2024-07-07 07:27:05

免责声明:我基本上无法完全理解VKAPI文档中的俄语文档

获得一篇文章

似乎没有文档化的方法来检索VKAPI中的文章,但是如果您已经在使用Python和vk_api,那么您可以使用在主类中实例化的会话。这不会给你一篇文章,而是HTML本身,因此如果你需要的话,你必须解析它来提取文本。这是我在代码中使用的东西:

import vk_api
    vk_session = vk_api.VkApi(login, password)
    try:
        vk_session.auth(token_only=True)
    except vk_api.AuthError as error_msg:
        print(error_msg)
        return
# Note that calls are going to be performed with the vk_session object, not the API class.
article_url = "https://vk.com/@riakatyusha-akademik-fortov-buduschee-budet-takim-kakim-my-ego-opredelim"
article_content = vk_session.http.get(article_url).text

这应该有助于你开始。从这里开始,您只需要处理HTML代码。不幸的是,没有关于the VK methods page中的文章的文档,因此我们可能无法处理文章

从组或用户页提取文章URL

下面是一些代码,可以帮助您开始从用户或社区页面提取所有文章。这里唯一的依赖项是bs4。我使用了lxml解析器,因为它是最快的,而且我在我的机器上有它,但是如果您不想要/拥有它,您可以使用其他解析器,如BeautifulSoup's docs中所建议的

这个非常简单的方法应该可以帮助您检索组中最近发布的20篇文章。我找不到加载更多项目的方法,尽管看起来您需要使用author_page.php。不过,这看起来很难。也许你会在audio class of VK_api中找到一些灵感,或者在their github.中询问

假设您不想访问私有组,下面是代码(我认为使用VK_api requests会话调用post和get方法足以登录到VK中,但您似乎需要额外的步骤):

import requests
from bs4 import BeautifulSoup
group_url = "https://m.vk.com/@riakatyusha"
body = requests.get(group_url)
soup = BeautifulSoup(body.text, "lxml")
articles_list = soup.find_all("div", class_="author-page-article")
for article in articles_list:
    # VK includes relative URLS in articles so you'd need to complete it first.
    url = article.a["href"]
    url = "https://m.vk.com"+url
    # Optionally, we could remove the GET params you have in urls such as context&ref.
    url = url.split("?")[0]
    # We still might retrieve some extra info in case you'd need.
    title = article.find("span", class_="author-page-article__title").text
    summary = article.p.text
    print(title, summary, url)

相关问题 更多 >