Python:如何使用请求或aiohttp获取包含Jinja模板的HTML文本?

Python:如何使用请求或aiohttp获取包含Jinja模板的HTML文本?,python,python-requests,jinja2,aiohttp,Python,Python Requests,Jinja2,Aiohttp,我使用python、request或aiohttp方法获取页面,并使用BeautifulSoup4解析页面。 服务器HTML页面使用jinja模板,因此当我使用请求或aiohttp获取此页面时,我会得到如下内容: <a href="/{{username}}" class=\'pr\'> <a href="/gavrilka" class=\'pr\'> aiohttp代码: import aiohttp url = 'MY U

我使用python、request或aiohttp方法获取页面,并使用BeautifulSoup4解析页面。 服务器HTML页面使用jinja模板,因此当我使用请求或aiohttp获取此页面时,我会得到如下内容:

<a href="/{{username}}" class=\'pr\'>
<a href="/gavrilka" class=\'pr\'>
aiohttp代码:

import aiohttp
url = 'MY URL'
header = {"MY HEADERS"}
payload = {}
async with aiohttp.ClientSession() as session:
    async with session.get(base_url, headers=headers) as resp:
        data = await resp.text()
        print(data)
    await session.close()

如何获得正确的页面文本?

使用了selenium和phantomjs,现在它可以工作了

from selenium import webdriver
from bs4 import BeautifulSoup

url = "https://yourlink"

driver = webdriver.PhantomJS() 
driver.set_window_size(1024, 768)  # optional
driver.get(url)
page_source = driver.page_source
soup = BeautifulSoup(page_source, 'lxml')

为什么不直接使用BeautifulSoup获取页面并进行解析呢?您需要让JavaScript呈现网站。请看:有许多不同的方法来解决这个问题。有些问题在链接的stackoverflow问题中进行了解释。我个人使用。Heroku支持最近被添加到这里,所以我很容易提到,我使用的是Telegrambot的一部分,部署在linux服务器(AWS)上。
from selenium import webdriver
from bs4 import BeautifulSoup

url = "https://yourlink"

driver = webdriver.PhantomJS() 
driver.set_window_size(1024, 768)  # optional
driver.get(url)
page_source = driver.page_source
soup = BeautifulSoup(page_source, 'lxml')