Python:如何使用请求或 aiohttp 获取具有 Jinja 模板的 HTML 文本?
Python: How to get HTML text that has Jinja templates using requests or aiohttp?
我正在使用python、request或aiohttp方法获取页面,BeautifulSoup4解析网页。
服务器 HTML 页面使用 jinja 模板,所以当我使用请求或 aiohttp 获取此页面时,我得到如下内容:
<a href="/{{username}}" class=\'pr\'>
但是如果您使用浏览器打开此页面,代码如下所示:
<a href="/gavrilka" class=\'pr\'>
请求代码:
import requests
url = 'MY URL'
header = {"MY HEADERS"}
payload = {}
response = requests.request("GET", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
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')
我正在使用python、request或aiohttp方法获取页面,BeautifulSoup4解析网页。 服务器 HTML 页面使用 jinja 模板,所以当我使用请求或 aiohttp 获取此页面时,我得到如下内容:
<a href="/{{username}}" class=\'pr\'>
但是如果您使用浏览器打开此页面,代码如下所示:
<a href="/gavrilka" class=\'pr\'>
请求代码:
import requests
url = 'MY URL'
header = {"MY HEADERS"}
payload = {}
response = requests.request("GET", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
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')