Python:如何使用请求或aiohttp获取包含Jinja模板的HTML文本?
我使用python、request或aiohttp方法获取页面,并使用BeautifulSoup4解析页面。 服务器HTML页面使用jinja模板,因此当我使用请求或aiohttp获取此页面时,我会得到如下内容: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
<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')