如何在不加载整个网页的情况下执行特定的js请求?

2024-04-25 13:02:45 发布

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

我试图从webpage视图中得到一个元素(2128数字位于眼睛图像的左上方)。这个数字是某个javascript函数的结果,因此它在源代码页中不存在,我无法通过http请求获得它。我也不想用seleniumwebdriver下载整个页面。有没有办法从页面运行一个javascript代码而不下载它?你知道吗


Tags: 函数代码图像视图http元素源代码数字
1条回答
网友
1楼 · 发布于 2024-04-25 13:02:45

您可以避免使用selenium而直接使用requests,但在这种情况下,这需要两个步骤—首先从初始网页获取短URL值,然后从单独的端点获取视图数:

import re

import requests


pattern = re.compile(r'data-shorturl="https://r.rbc.ru/(.*?)"')
with requests.Session() as session:
    session.headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36'}
    response = session.get("https://www.rbc.ru/society/05/01/2018/5a4e9de19a7947e2bef693a1?from=main")

    short_url = pattern.search(response.text).group(1)

    response = session.get("https://www.rbc.ru/redir/stat/{short_url}".format(short_url=short_url))

    data = response.json()
    print(data["show"])

当前打印7712。你知道吗

请注意,在本例中,使用regex提取短URL值是完全可以的,因为我们不使用正则表达式解析HTML标记和结构,而只是在文档中某处提取URL字符串的特定部分。你知道吗

相关问题 更多 >